๊ด€๋ฆฌ ๋ฉ”๋‰ด

Welcome! Everything is fine.

[TIL] 220127 ๋ณธ๋ฌธ

TIL

[TIL] 220127

๊ฐœ๋ฐœ๊ณฐ๋ฐœ 2022. 1. 27.
728x90

๐Ÿ’ป Today I Leaned...

๐Ÿ“Œ ์ฝ”ํ‹€๋ฆฐ 3๊ฐ•์œผ๋กœ ๋๋‚ด๊ธฐ - 1ํŽธ ๊ธฐ๋ณธ๋ฌธ๋ฒ•

1. ํ•จ์ˆ˜

์ œ์ผ ๋จผ์ €, ์ฝ”ํ‹€๋ฆฐ์˜ ์—”ํŠธ๋ฆฌ ํ•จ์ˆ˜๋Š” fun main()ํ•จ์ˆ˜์ด๋‹ค.

fun main(){

}

์ž๋ฐ”์˜ ๊ฒฝ์šฐ, ๋งจ ์•ž์—  ๋ฆฌํ„ดํƒ€์ž…์„ ์ ์–ด์คฌ์ง€๋งŒ ์ฝ”ํ‹€๋ฆฐ์€ ์–ด๋–ค ํƒ€์ž…์ด๋“  fun ๋จผ์ € ์ ์–ด์ค€๋‹ค.  ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ€๋ณ๊ฒŒ HelloWorld๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋งŒ์•ฝ ๋ฆฌํ„ดํ˜•์ด ์—†๋Š” ๊ฒฝ์šฐ,  Unit์ด๋ผ๊ณ  ์ ์–ด์ฃผ์ง€๋งŒ ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค.

fun helloWorld(){
    println("Hello")
}

๋งŒ์•ฝ ๋ฆฌํ„ด ํƒ€์ž…์ด ์žˆ๋Š” ํ•จ์ˆ˜๋ผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€์ˆ˜ ์ด๋ฆ„ : ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์ ์–ด์ฃผ๊ณ , ๋ฆฌํ„ดํƒ€์ž…๋„ ๋ฐ˜๋“œ์‹œ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.

package com.example.kotlin_1

fun main(){

    println(add(4,5))

}

fun add(a : Int, b : Int) : Int{ // ๋ฆฌํ„ดํƒ€์ž… ์ƒ๋žต ๋ถˆ๊ฐ€
    return a+b
}

2. val(์ƒ์ˆ˜) vs var(๋ณ€์ˆ˜)

val์€ value๋กœ, ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฐ’์„ ๋งํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ ๊ณ  val ๋กœ ์„ ์–ธํ•œ a์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ ค๊ณ  ํ•˜๋ฉด 'Val cannot be reassigned'๋ผ๊ณ  ๋œจ๋ฉด์„œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค. ๋ฐ˜๋ฉด var๋Š” variable๋กœ, ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ๋”ฐ๋ผ์„œ var๋กœ ์„ ์–ธํ•œ b์˜ ๊ฐ’์„ ๋’ค์—์„œ ๋ฐ”๊พธ์–ด๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.  ๋˜ํ•œ  c, name ๋ณ€์ˆ˜๋ฅผ ๋ณด๋ฉด ์ฝ”ํ‹€๋ฆฐ์€ ํƒ€์ž…์„ ์ ์ง€ ์•Š์•„๋„ ํ• ๋‹น๋œ ๊ฐ’์˜ ํ˜•ํƒœ๋ฅผ ๋ณด๊ณ  ์ž๋™์œผ๋กœ ํƒ€์ž… ์ถ”๋ก ์„ ํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ”๋กœ ํ• ๋‹น์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํƒ€์ž…์„ ์จ์ค˜์•ผํ•œ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด ์•Œ๋ ค์ค€ ์‰ฝ๊ฒŒ ์™ธ์šฐ๋Š” ๋ฒ• : val์€ ๋ฐœ, ๋—„ ์ˆ˜ ์—†์Œ, ์ˆ˜์ •X / var๋Š” ๋ฐ”์ง€, ๋—„ ์ˆ˜ ์žˆ์Œ, ์ˆ˜์ •๐Ÿ˜

fun hi(){

    val a : Int = 10 // ๋ฐœ - ๋—„์ˆ˜์—†์Œ, ์ˆ˜์ •X
    var b : Int = 9 // ๋ฐ”์ง€ - ๋—„์ˆ˜์žˆ์Œ, ์ˆ˜์ •O

    a = 100 // ์—๋Ÿฌ
    b = 100
    
    val c = 100 // Int๋ผ๊ณ  ์ ์ง€ ์•Š์•„๋„ Int์ธ์ค„ ์•Œ์ง€๋งŒ val/var์€ ์ ์–ด์ค˜์•ผ ํ•จ.
    var name = "gom"
}

3. String templat

string์„ ์ถœ๋ ฅํ•  ๋•Œ, ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด $ ํ‘œ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. { }๋Š” ๋„ฃ์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ๋„ฃ์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๊นŒ์ง€ ๋ณ€์ˆ˜๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์จ์ฃผ๋Š” ๊ฒƒ์ด ๊น”๋”ํ•˜๋‹ค. ๋งŒ์•ฝ $ ํ‘œ์‹œ๋ฅผ ๊ทธ๋ƒฅ String์œผ๋กœ ์“ฐ๊ณ ์‹ถ์„ ๋•Œ๋Š” ์•ž์— ๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. 

fun main(){

    var name = "gom"
    println("my name is ${name}I'm 2")

    println("Is it true? ${1==0}")

    println("This is 2\$a") // ๊ทธ๋ƒฅ $ ํ‘œ์‹œ๋ฅผ ์“ฐ๊ณ ์‹ถ์„ ๋• ์•ž์— ๋ฐฑ์Šฌ๋ž˜์‹œ
    
}

4. ์กฐ๊ฑด์‹

1) if - else

  • ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : If - else๋ฌธ์„ ์ด์šฉํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.
fun maxBy(a : Int, b : Int) : Int{
    if(a > b){
        return a
    }else{
        return b
    }
}
  • ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™์€ ํ˜•์‹์ด์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๋”์šฑ ๊ฐ„๊ฒฐํ•ด์„œ ๋งŽ์ด ์“ฐ์ธ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ์‚ผํ•ญ์—ฐ์‚ฐ์ž(ex. return (a > b) ? a : b) ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค.
fun maxBy2(a : Int, b : Int) = if(a > b) a else b

2) when

์ฝ”ํ‹€๋ฆฐ์—์„œ if๋งŒํผ ์ž์ฃผ ์“ฐ์ธ๋‹ค. switch๋ฌธ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” when์„ ์ด์šฉํ•˜์—ฌ score๊ฐ€ 0์ด๋ฉด "this is 0", 1์ด๋ฉด "this is 1", 2, 3์ด๋ฉด "this is 2 or 3", ์•„๋‹ˆ๋ฉด "I don't know"๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค. function๊ฐ™์€ ๊ฒฝ์šฐ else๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ƒ๊ด€์—†๋‹ค.

fun checkNum(score : Int) {

    when(score){
        0 -> println("this is 0")
        1 -> println("this is 1")
        2, 3 -> println("this is 2 or 3")
        else -> println("I don't know")
    }
    
}

ํ•˜์ง€๋งŒ when์€ ์•„๋ž˜์™€ ๊ฐ™์ด return์‹์œผ๋กœ๋„ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ๋Š” else๋ฅผ ๊ผญ ์จ์ค˜์•ผ when์„ ๋ฌธ์ œ์—†์ด Expression์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

fun checkNum(score : Int) {

    var b = when(score){
        1 -> 1
        2 -> 2
        else -> 3
    }
    
}

์•„๋ž˜ ์ฝ”๋“œ๋Š” score๊ฐ€ 90์—์„œ 100์‚ฌ์ด๋ผ๋ฉด "You are genius", 10์—์„œ 80์‚ฌ์ด๋ผ๋ฉด "not bad", ์•„๋‹ˆ๋ผ๋ฉด "okay"๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค. ์ด ๊ฒฝ์šฐ ์—ญ์‹œ else๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

fun checkNum(score : Int) {

    when(score){
        in 90..100 -> println("You are genius")
        in 10..80 -> println("not bad")
        else -> println("okay")
    }
    
}

โ” Expression vs Statment

๋ฐ”๋กœ ์œ„ when์— ๋Œ€ํ•œ ์˜ˆ์ œ์—์„œ ์ฒซ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์˜ˆ์ œ๋Š” Statment์ด๊ณ  ๋‘ ๋ฒˆ์งธ ์˜ˆ์ œ๋Š” Expression์ด๋‹ค. ๊ทธ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ?

  • Expression : ์–ด๋–ค ๊ฐ’์„ ๋งŒ๋“œ๋Š” ๊ฒƒ. ์ฝ”ํ‹€๋ฆฐ์—์„œ ๋ชจ๋“  ํ•จ์ˆ˜๋Š” Expression์œผ๋กœ ์‚ฌ์šฉ๋จ.(๋ฆฌํ„ด๊ฐ’์ด ์•ˆ๋ณด์ด๋Š” ํ•จ์ˆ˜๋ผ๋„ Unit์ด๋ผ๋Š” ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— Expression)
  • Statment : "์ด๋ ‡๊ฒŒ ํ•ด!"์ฒ˜๋Ÿผ ๋ช…๋ น์„ ์ง€์‹œํ•˜๋Š” ๋ฌธ์žฅ์˜ ๊ฒฝ์šฐ Statment ๋กœ ๋ถ„๋ฅ˜๋จ.

์ข€ ๋” ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ Statment๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ์˜ ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ ์กฐ๊ฐ์ด๊ณ , Expression์€ ํŠน์ •ํ•œ ๊ฐ’์œผ๋กœ ์ˆ˜๋ ด๋˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL] 220130  (0) 2022.01.30
[TIL] 220128  (0) 2022.01.28
[TIL] 220125  (0) 2022.01.25
[TIL] 220122  (0) 2022.01.22
[TIL] 220121  (0) 2022.01.21