๋Œ€์™ธ ํ™œ๋™/๋ถ€์ŠคํŠธ์ฝ”์Šค ์„œํฌํ„ฐ์ฆˆ 3๊ธฐ

[๋ถ€์ŠคํŠธ์ฝ”์Šค] 02. ์ฝ”ํ‹€๋ฆฐ ๋ณ€์ˆ˜์™€ ์ž๋ฃŒํ˜•

๋…ธ๋ฃจ๋ฃฝ 2021. 2. 15. 02:05

์ฝ”ํ‹€๋ฆฐ ๋ณ€์ˆ˜ ์„ ์–ธ

์„ ์–ธ ๋ฐฉ๋ฒ•

val (value) - ๋ถˆ๋ณ€ํ˜•. ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™” ํ›„ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ X

var (variable) - ๊ฐ€๋ณ€ํ˜•

 

fun main() {
    var username: String = "Kildong"
    username = "Dooly"

    println("username: $username")
}

๋ฌธ์ž์—ด ๋‚ด์— ๋ณ€์ˆ˜๋‚˜ ์‹์„ ${๋ณ€์ˆ˜ ํ˜น์€ ์‹}์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ด๋ฉด $username์ฒ˜๋Ÿผ ์ค‘๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅ.

 

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐํ˜•์„ ์ถ”๋ก ํ•ด ์„ ์–ธํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

fun main() {
    var username = "Kildong"
    var count = 3

    println("username: $username, count: $count")
}

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ถ”๋ก ํ•œ ๋ณ€์ˆ˜๋Š” ctrl + shift + p๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์ฃผ์˜์‚ฌํ•ญ

  • ์ž๋ฃŒํ˜•์„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

๋ณ€์ˆ˜๋ช…์„ ์„ ์–ธ๋งŒ ํ•  ์ˆ˜ X
์ž๋ฃŒํ˜•์„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

  • ๋ณ€์ˆ˜ ์ด๋ฆ„์€ 123abc์™€ ๊ฐ™์ด ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ณ€์ˆ˜ ์ด๋ฆ„์—๋Š” while, if ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ์˜๋ฏธ ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (ex - numberOfBooks)

 

์ž๋ฃŒํ˜•์˜ ์ข…๋ฅ˜

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ž๋ฃŒํ˜•์€ ๊ธฐ๋ณธํ˜•, ์ฐธ์กฐํ˜• ์ž๋ฃŒํ˜•์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ์ฝ”ํ‹€๋ฆฐ์€ ์ฐธ์กฐํ˜• ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๊ธฐ๋ณธํ˜• (Primitive data type)

  • ๊ฐ€๊ณต๋˜์ง€ ์•Š์€ ์ˆœ์ˆ˜ํ•œ ์ž๋ฃŒํ˜•์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋‚ด์žฅ
  • int, long, float, double ๋“ฑ

 

์ฐธ์กฐํ˜•(Reference type)

  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋™์  ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‘๊ณ  ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ž๋ฃŒํ˜•
  • Java๋Š” int, long. float ๊ฐ™์€ ๊ธฐ๋ณธํ˜•๊ณผ String, Data ๊ฐ™์€ ์ฐธ์กฐํ˜•์„ ๋ชจ๋‘ ์‚ฌ์šฉ
  • Kotlin์€ ์ฐธ์กฐํ˜•๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ปดํŒŒ์ผ ๊ณผ์ •์„ ํ†ตํ•ด ๊ธฐ๋ณธํ˜•์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. (์„ฑ๋Šฅ์„ ์œ„ํ•ด)
  • ๊ธฐ๋ณธํ˜•๋ณด๋‹ค๋Š” ์„ฑ๋Šฅ์ด ๋‹ค์†Œ↓
  • Int, Long, Float, Double ๋“ฑ. (๋Œ€๋ฌธ์ž๋กœ ์„ ์–ธ)

 

์ž๋ฃŒํ˜• ์‚ฌ์šฉ์˜ ์˜ˆ

1. ์ž๋ฃŒํ˜• ์ƒ๋žต

val num01 = 127 // Intํ˜•์œผ๋กœ ์ถ”๋ก 
val num02 = 989559489302359407 // ๊ธธ์–ด์„œ Longํ˜•์œผ๋กœ ์ถ”๋ก 

 

2. ์ ‘๋ฏธ์‚ฌ ์ ‘๋‘์‚ฌ ์‚ฌ์šฉ

val exp01 = 123 // Intํ˜•
val exp02 = 123L // ์ ‘๋ฏธ์‚ฌ L => Longํ˜•
val exp03 = 0x0F // ์ ‘๋‘์‚ฌ 0x => 16์ง„ ํ‘œ๊ธฐ๊ฐ€ ์‚ฌ์šฉ๋œ Intํ˜•
val exp04 = 0b00001011 // ์ ‘๋‘์‚ฌ 0b => 2์ง„ํ‘œ๊ธฐ๊ฐ€ ์‚ฌ์šฉ๋œ Intํ˜•

 

3. ์ž‘์€ ๊ฐ’์˜ ์‚ฌ์šฉ

val exp08: Byte = 127 // ๋ช…์‹œ์ ์œผ๋กœ ์ž๋ฃŒํ˜• ์ง€์ •. Byteํ˜•
val exp09 = 32767 // ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, Shortํ˜• ๋ฒ”์œ„์˜ ๊ฐ’๋„ Intํ˜•์œผ๋กœ ์ถ”๋ก 
val exp10: Short = 32767 // ๋ช…์‹œ์ ์œผ๋กœ ์ž๋ฃŒํ˜• ์ง€์ •. Shortํ˜•

 

4. ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜ ์ž๋ฃŒํ˜• (unsigned)

val uint: UInt = 153u // usigned intํ˜•. ๋’ค์— u๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.
val ushort: UShort = 65535u
val ulong: ULong = 46322342uL
val ubtye: UByte = 244u

 

5. ํฐ ์ˆ˜๋ฅผ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

์–ธ๋”์Šค์ฝ”์–ด(_)๋Š” ์ˆซ์ž์— ์•„๋ฌด ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

val number = 1_000_000
val cardNum = 1234_1234_1234_1234L
val hexVal = 0xAB_CD_EF_12
val bytes = 0b1101_0010

 

์‹ค์ˆ˜ ์ž๋ฃŒํ˜•

ํ˜•์‹ ์ž๋ฃŒํ˜• ํฌ๊ธฐ ๊ฐ’์˜ ๋ฒ”์œ„
์‹ค์ˆ˜ํ˜• Double 8๋ฐ”์ดํŠธ (64๋น„ํŠธ) ์•ฝ 4.9E-324 ~ 1.7E+308 (IEEE754)
Float 4๋ฐ”์ดํŠธ (32๋น„ํŠธ) ์•ฝ 1.4E-45 ~3.4E+38 (IEEE754)
val exp01 = 3.14 // Double ํ˜•
val exp02 = 3.14F // ์‹๋ณ„์ž F์— ์˜ํ•ด Floatํ˜•

 

๊ณต๊ฐ„ ์ œ์•ฝ์— ๋”ฐ๋ฅธ ๋ถ€๋™ ์†Œ์ˆ˜์  ์—ฐ์‚ฐ์˜ ๋‹จ์ 

(๋ถ€๋™์†Œ์ˆ˜์ ์— ๊ด€ํ•œ ์„ค๋ช…์€ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค.)

๋ถ€๋™์†Œ์ˆ˜์ ์€ ๊ฐ€์ˆ˜๋ถ€์™€ ์ง€์ˆ˜๋ถ€๋กœ ๋‚˜๋ˆ„์–ด ํ‘œํ˜„ํ•˜๋Š”๋ฐ,

ํ‘œํ˜„ํ•ด์•ผ ํ•  ์‹ค์ˆ˜๋Š” ๋ฌดํ•œํžˆ ๋งŽ์ง€๋งŒ ์ด๋ฅผ ํ‘œํ˜„ํ•  ๋น„ํŠธ๋Š” ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Float, Double ์ž๋ฃŒํ˜•์—์„œ ์ฃผ๋กœ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค!

fun main() {
    var num: Double = 0.1

    for(x in 0..999){
        num += 0.1
    }

    println("num: $num")
}

๊ฒฐ๊ณผ๊ฐ’์ด 100์ด ์•„๋‹Œ, ์š”์ƒํ•œ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ด.

 

์ž๋ฃŒํ˜•์˜ ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’

fun main() {
    println("Byte: ${Byte.MIN_VALUE} ~ ${Byte.MAX_VALUE}")
    println("Int: ${Int.MIN_VALUE} ~ ${Int.MAX_VALUE}")
    println("Short: ${Short.MIN_VALUE} ~ ${Short.MAX_VALUE}")
    println("Long: ${Long.MIN_VALUE} ~ ${Long.MAX_VALUE}")
    println("Float: ${Float.MIN_VALUE} ~ ${Float.MAX_VALUE}")
    println("Double: ${Double.MIN_VALUE} ~ ${Double.MAX_VALUE}")
}

 

๊ฐ ์ž๋ฃŒํ˜•์˜ ์ตœ๋Œ€, ์ตœ์†Œ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿฏ ๊ฟ€ํŒ

๋”๋ณด๊ธฐ

๋‹ค์ค‘ ์„ ํƒ: Alt + Shift + ๋”๋ธ”ํด๋ฆญ

 

๊ทธ ๋ฐ–์˜ ์ž๋ฃŒํ˜•

๋…ผ๋ฆฌ ์ž๋ฃŒํ˜•

ํ˜•์‹ ์ž๋ฃŒํ˜• ํฌ๊ธฐ ๊ฐ’์˜ ๋ฒ”์œ„
๋…ผ๋ฆฌํ˜• Boolean 1๋น„ํŠธ true, false
val isOpen = true // Booleanํ˜•์œผ๋กœ ์ถ”๋ก 
val isUploaded: Boolean // ์„ ์–ธ๋งŒ ํ•œ ๊ฒฝ์šฐ ์ž๋ฃŒํ˜• ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ

 

๋ฌธ์ž ์ž๋ฃŒํ˜•

ํ˜•์‹ ์ž๋ฃŒํ˜• ํฌ๊ธฐ ๊ฐ’์˜ ๋ฒ”์œ„
๋ฌธ์ž Char 2๋ฐ”์ดํŠธ (16๋น„ํŠธ) 0~2^15-1
val ch = 'c' // ch๋Š” Char๋กœ ์ถ”๋ก 
val ch2: Char // ์„ ์–ธ๋งŒ ํ•œ ๊ฒฝ์šฐ ์ž๋ฃŒํ˜• ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ

 

๋ฌธ์ž์—ด ์ž๋ฃŒํ˜•

๋ฌธ์ž์˜ ๋ฐฐ์—ด

String์œผ๋กœ ์„ ์–ธ๋˜๋ฉฐ String Pool์ด๋ผ๋Š” ๊ณต๊ฐ„์— ๊ตฌ์„ฑ

๋‚˜์ค‘์— ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค!

์ €์žฅ๋œ "Hello"๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์•„๋‹˜.

fun main() {
    var str1: String = "Hello"
    var str2 = "World"
    var str3 = "Hello"

    println("str1 === str2: ${str1===str2}")
    println("str1 === str3: ${str1===str3}")
}

==๋Š” ๊ฐ’๋งŒ ๋น„๊ต, ===๋Š” ์ฐธ์กฐ๊นŒ์ง€ ๋น„๊ต

 

str1๊ณผ str3๋Š” ๋˜‘๊ฐ™์€ ์ฐธ์กฐ(A1)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ์ฃผ์†Œ๊ฐ€ ๋˜‘๊ฐ™๊ณ  ๋ณ€์ˆ˜ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ ๊ฒƒ!

 

ํ‘œํ˜„์‹

๋ฌธ์ž์—ด ์ž๋ฃŒํ˜•์—์„œ ํ‘œํ˜„์‹์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

fun main() {
    var a = 1
    val str1 = "a = $a"
    val str2 = "a = ${a + 2}"

    println("str1: \"$str1\", str2: \"$str2\"")
}

์ถœ์ฒ˜

๋ณธ ํฌ์ŠคํŒ…์€ ๋ถ€์ŠคํŠธ์ฝ”์Šค ์„œํฌํ„ฐ์ฆˆ 3๊ธฐ ํ™œ๋™์œผ๋กœ์„œ

'์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ 1' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

www.boostcourse.org/mo132

 

์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ 1

๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ฌด๋ฃŒ ๊ฐ•์˜

www.boostcourse.org