๐Ÿค– ์•ˆ๋“œ๋กœ์ด๋“œ/์ฝ”ํ‹€๋ฆฐ

์ฝ”๋ฃจํ‹ด(coroutine)๋น„๋™๊ธฐ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฃจํ‹ด์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฉ”์ธ ๋ฃจํ‹ด์€ ๋”ฐ๋กœ๋‘๊ณ , ๋ณ„๋„๋กœ ์ง„ํ–‰์ด ๊ฐ€๋Šฅํ•œ ๋ฃจํ‹ด์ด๋‹ค.๊ฐœ๋ฐœ์ž๊ฐ€ ์‹คํ–‰, ์ข…๋ฃŒ๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.์ฝ”๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜๊ธฐ์ „ ์ตœ์ƒ๋‹จ์— "import kotlinx.coroutines.*" ์„ ์จ์ค˜์•ผํ•œ๋‹ค. ์ฝ”๋ฃจํ‹ด์˜ scope์ œ์–ด๋ฒ”์œ„ ๋ฐ ์‹คํ–‰ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.GlobalScope์™€ CoroutineScope๋กœ ๋‚˜๋‰œ๋‹ค.GlobalScopeํ”„๋กœ๊ทธ๋žจ ์–ด๋””์—์„œ๋‚˜ ์ œ์–ด์™€ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•œ ์ฝ”๋ฃจํ‹ด์˜ ๊ธฐ๋ณธ ๋ฒ”์œ„๋‹ค.CoroutineScopeํŠน์ •ํ•œ ๋ชฉ์ ์˜ Dispatcher๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ œ์–ด ๋ฐ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•œ ์ƒˆ๋กœ์šด ์ฝ”๋ฃจํ‹ด์˜ ๋ฒ”์œ„๋‹ค.CoroutineScope๋ฅผ ๋งŒ๋“ค ๋•Œ ์ ์šฉ ๊ฐ€๋Šฅํ•œ Dispatcher๋Š” ์„ธ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. Dispatchers.Default..
๋น„ํŠธ์—ฐ์‚ฐ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜๋ฅผ 10์ง„๋ฒ•์œผ๋กœ ์—ฐ์‚ฐํ•˜๋Š” ๋Œ€์‹  2์ง„๋ฒ•์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.์‹ค๋ฌด์—์„œ ๋น„ํŠธ์—ฐ์‚ฐ์€ ๊ฑฐ์˜ ๊ณ„์‚ฐ์— ์‚ฌ์šฉ ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ •์ˆ˜ํ˜•์˜ ๊ฐ’์„ ๋น„ํŠธ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ข€ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‹ด์•„ ๊ฒฝ์ œ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.์˜ˆ์‹œ32๋น„ํŠธ์˜ 2์ง„์ˆ˜ ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜ ์•ˆ์— 0๋˜๋Š” 1์ด 32๊ฐœ ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค.32๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ์ •๋ณด๋งŒ ๋‚˜ํƒ€๋Š”๋ฐ ์“ฐ์ง€์•Š๊ณ , ์•ž์— 5๋น„ํŠธ์™€ ๋’ค์— 27๋น„ํŠธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.์ด๋ ‡๊ฒŒ ๋ณ€์ˆ˜ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ๋‹ด์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๋น„ํŠธ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€ํ•˜๋„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ๋กœ ํ”Œ๋ž˜๊ทธ ๊ฐ’(์—ฌ๋Ÿฌ๊ฐœ์˜ ์ƒํƒœ๊ฐ’์„ 0๊ณผ 1๋กœ ๋‹ด๋Š” ๋ฐฉ๋ฒ•)์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ์—์„œ ํ”„๋กœํ† ์ฝœ์˜ ๋ฐ์ดํ„ฐ ์–‘์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.2์ง„์ˆ˜ ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜๋Š” ์ขŒ์ธก์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์ƒ์œ„๋น„ํŠธ, ..
varํ•œ๋ฒˆ ์„ ์–ธํ•ด๋‘” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. valํ•œ๋ฒˆ ์„ ์–ธํ•ด๋‘” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.val์€ ํ• ๋‹น๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์„ ๋ฟ์ด์ง€ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ƒ์ˆ˜ํ•œ๋ฒˆ ์„ ์–ธํ•ด๋‘” ๋ณ€์ˆ˜์˜ ๊ทธ ๋ฌด์—‡๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฒฐ์ •๋˜๋Š” ์ ˆ๋Œ€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๊ฐ’์ด๋‹ค.์„ ์–ธํ• ๋•Œ val์•ž์— const๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.์ƒ์ˆ˜๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.(String์ž๋ฃŒํ˜• ํฌํ•จ) ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค์€ ๋‹ด์„ ์ˆ˜ ์—†๋‹ค.์ƒ์ˆ˜๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ์ด๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.๋ฐ˜๋“œ์‹œ companion object์— ์„ ์–ธํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ƒ๊ด€์—†์ด ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋œ ๊ณ ์ •์ ์ธ ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.์ƒ์ˆ˜์˜ ์ด๋ฆ„์„ ๋งŒ๋“ค๋•Œ๋Š” ๊ด€๋ก€์ ์œผ๋กœ ๋Œ€๋ฌธ์ž์™€ ์–ธ๋”๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜..
์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํฌํ•จ๋œ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ฝ”ํ‹€๋ฆฐ์€ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปฌ๋ ‰์…˜ ํ•จ์ˆ˜list, set, map๊ณผ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ฐฐ์—ด์— ์ผ๋ฐ˜ ํ•จ์ˆ˜ ๋˜๋Š” ๋žŒ๋‹ค ํ•จ์ˆ˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ ์—†์ด๋„ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ˆœํšŒํ•˜๊ฑฐ๋‚˜ ์กฐ๊ฑด์„ ๊ฑธ๊ณ  ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์ง€์นญํ•œ๋‹ค. forEach์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ด„ํ˜ธ ์•ˆ์—์„œ ์ปฌ๋ ‰์…˜์— ํฌํ•จ๋œ ๋ชจ๋“  ์š”์†Œ๋ฅผ it์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.collection.forEach{ println(it)}  filter์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ด„ํ˜ธ ์•ˆ์—์„œ it์— ์กฐ๊ฑด์„ ๊ฑธ์–ด ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ์ฒด๋งŒ ๋‹ค์‹œ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.collection.forEach..
SetList์™€ ๋‹ฌ๋ฆฌ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์ด๋‹ค.์ธ๋ฑ์Šค๋กœ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ contains()๋กœ ๊ฐ์ฒด๊ฐ€ set์•ˆ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์‹์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.Set๋„ List์ฒ˜๋Ÿผ MutableSet๊ฐ€ ์กด์žฌํ•œ๋‹ค.๊ฐ์ฒด์˜ ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.์š”์†Œ์˜ ์ถ”๊ฐ€๋Š” add(), ์š”์†Œ์˜ ์‚ญ์ œ๋Š” remove() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ์ œfun main(){ val a = mutableSetOf("์—ฐํ•„", "๋‹ฌ๋ ฅ", "์ง€์šฐ๊ฐœ") for(item in a){ println("$item") } a.add("ํ˜•๊ด‘ํŽœ") println(a) a.remove("๋‹ฌ๋ ฅ") println(a) println(a.con..
Data Class๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ์— ์ตœ์ ํ™”๋œ ํด๋ž˜์Šค์ด๋‹ค.5๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค.equals()๋‚ด์šฉ์˜ ๋™์ผ์„ฑ์„ ํŒ๋‹จํ•œ๋‹ค.hashcode()ํด๋ž˜์Šค์˜ ๋‚ด์šฉ์—์„œ ๊ณ ์œ ์˜ ํ•ด์‰ฌ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.๊ฐ์ฒด์˜ ๋‚ด์šฉ์—์„œ ๊ณ ์œ ํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.toString()ํฌํ•จ๋œ ์†์„ฑ์„ ๋ณด๊ธฐ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ธ๋‹ค.copy()๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์˜ ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.copy() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ƒ์„ฑ์ž์™€ ๋˜‘๊ฐ™์€ ํ˜•ํƒœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฃผ์–ด  ์ผ๋ถ€ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.์•„๋ฌด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ต์ฒดํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.componentX()์†์„ฑ์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.component1(), component2..
์ฝ”ํ‹€๋ฆฐ์ด ์ง€์›ํ•˜๋Š” ํด๋ž˜์Šค ์œ ํ˜• ์ค‘ ํด๋ž˜์Šค ์•ˆ์— ํด๋ž˜์Šค๊ฐ€ ์ค‘์ฒฉ๋˜๋Š” ์œ ํ˜•์€ ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํด๋ž˜์Šค ๋‘๊ฐ€์ง€๋‹ค. ์ค‘์ฒฉ ํด๋ž˜์Šค(Nested Class)ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ๊ณผ ๊ฐ•ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ• ๋•Œ๋Š” "(์™ธ๋ถ€ํด๋ž˜์Šค ์ด๋ฆ„).(์ค‘์ฒฉํด๋ž˜์Šค ์ด๋ฆ„)" ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.ํ˜•ํƒœ๋งŒ ๋‚ด๋ถ€์— ์กด์žฌํ•  ๋ฟ ์‹ค์งˆ์ ์œผ๋กœ๋Š” ์™ธ๋ถ€์™€ ์ค‘์ฒฉ ํด๋ž˜์Šค ์„œ๋กœ ๋‚ด์šฉ์„ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋Š” ๋ณ„๊ฐœ์˜ ํด๋ž˜์Šค๋‹ค. ๋‚ด๋ถ€ ํด๋ž˜์Šค์ค‘์ฒฉ ํด๋ž˜์Šค ๋Œ€์‹  ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์ค‘์ฒฉ ํด๋ž˜์Šค์— "inner"๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.ํ˜ผ์ž์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๊ณ  ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ์ƒ์„ฑ๊ณผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋‹ค.๊ทธ๋ž˜์„œ ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ์ œfun main(){ Outer..
overloading๊ฐ™์€ ์Šค์ฝ”ํ”„ ์•ˆ์—์„œ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.fun hello(x: Int)fun hello(x: Int, text: String)fun hello(x: Int, y: Int)ํ•˜์ง€๋งŒ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅด๊ณ  ์ž๋ฃŒํ˜•์ด ๊ฐ™๋‹ค๋ฉด ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•  ์ˆ˜ ์—†๋‹ค.fun hello(x: Int, y: Int)fun hello(a: Int, b: Int)  ์˜ˆ์ œfun main(){ read(24) read("ํ™๊ธธ๋™")}fun read(x: Int){ println("์ˆซ์ž $x ์ž…๋‹ˆ๋‹ค")}fun read(x: String){ println("๋ฌธ์ž $x ..
null ์ƒํƒœ ํ™•์ธnull์ƒํƒœ๋กœ ์†์„ฑ์ด๋‚˜ ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ ค๊ณ  ํ•˜๋ฉด null pointer exception์ด ๋ฐœ์ƒํ•œ๋‹ค.null pointer exception : null์ธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๊ทธ๋ž˜์„œ nullable ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” nullํ™•์ธ ์—†์ด๋Š” ์ฝ”๋“œ๊ฐ€ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š๋Š”๋‹ค.var sample: String? = null// if๋ฌธ์œผ๋กœ nullalbe ํ™•์ธif(sample != null) println(sample.toUpperCase())null ์ฒดํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ผํžˆ if๋ฌธ์œผ๋กœ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๋Š” ๋Œ€์‹  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.?. (null safe operator)?: (elvis operator)!!. (non-null assertion operator)  ?. (null safe o..
(๋ฌธ์ž์—ด).length๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค(๋ฌธ์ž์—ด).toLowercase์˜๋ฌธ ์ „์ฒด๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค(๋ฌธ์ž์—ด).toUppercase์˜๋ฌธ ์ „์ฒด๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค(๋ฌธ์ž์—ด).split("(๊ธฐ์ค€๋ฌธ์ž)")ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ๋ฐฐ์—ด์— ๋‹ด์€ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค์ด๋•Œ ๊ธฐ์ค€ ๋ฌธ์ž๋ฅผ delimiter๋ผ๊ณ ๋ถ€๋ฅธ๋‹ค.์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ split์— ์ •๊ทœ์‹์ด ์•„๋‹Œ ์ผ๋ฐ˜ ๋ฌธ์ž์—ด์„ ๋„ฃ์–ด๋„ ๋™์ž‘ํ•œ๋‹ค.(๋ฌธ์ž์—ด ๋ฐฐ์—ด).joinToString()๋ฌธ์ž์—ด์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋‹ค์‹œ ํ•˜๋‚˜๋กœ ํ•ฉ์นœ๋‹ค.๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์•„๋ฌด๊ฒƒ๋„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ƒฅ ํ•ฉ์ณ์ง€๊ณ , ๋ฌธ์ž์—ด์„ ๋„ฃ์œผ๋ฉด ๊ทธ ๋ฌธ์ž์—ด์„ ์‚ฌ์ด์— ๋„ฃ์–ด์ค€๋‹ค.(๋ฌธ์ž์—ด).substring((์‹œ์ž‘)..(๋))๋ฌธ์ž์—ด ์ค‘ ์ผ๋ถ€๋งŒ ๊ฐ€์ ธ์˜ดfor๋ฌธ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ InRange ํ˜•์‹์„ ์‚ฌ์šฉ..
์ œ๋„ˆ๋ฆญ์ด ํ•„์š”ํ•œ ์ด์œ ํด๋ž˜์Šค A์™€ ์ด๋ฅผ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค B๊ฐ€ ์žˆ๋‹ค.๋‘ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?์Šˆํผํด๋ž˜์Šค์˜ ์ž๋ฃŒํ˜•์ธ A์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ›์œผ๋ฉด B๋Š” ์ž๋™์œผ๋กœ A๋กœ ์บ์ŠคํŒ… ๋œ๋‹ค. โžก๏ธ ๋‘ ํด๋ž˜์Šค ๋ชจ๋‘ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.ํ•˜์ง€๋งŒ ์บ์ŠคํŒ… ์—ฐ์‚ฐ์„ ๊ฑฐ์น˜๋Š”๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚จ๋‹ค. ์ด๋ฅผ ์ œ๋„ˆ๋ฆญ์ด ๋ณด์™„ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.fun castingExam(var a: A) // B๋ฅผ ๋„ฃ์–ด๋„ A๋กœ ์บ์ŠคํŒ…๋œ๋‹ค.  ์ œ๋„ˆ๋ฆญํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒํ˜•์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ ๊ณ ์ •์ ์ธ ์ž๋ฃŒํ˜• ๋Œ€์‹  ์‹ค์ œ ์ž๋ฃŒํ˜•์œผ๋กœ ๋Œ€์ฒด๋˜๋Š” ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์— ํŠน์ • ์ž๋ฃŒํ˜•์ด ํ• ๋‹น๋˜๋ฉด ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ..
๋น„์œ ๋ฅผ ํ†ตํ•œ ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์Œ๋ฃŒ์—๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์ฝœ๋ผ, ์ฃผ์Šค, ์ปคํ”ผ ๋“ฑ..์ด ์ค‘ ์ฝœ๋ผ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ์ฝœ๋ผ๋ฅผ ์ฝœ๋ผ ์ž์ฒด๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์Œ๋ฃŒ๋ผ๋Š” ํŠน์„ฑ์œผ๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š”๊ฒƒ์ด ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์ด๋‹ค. ์ฝ”ํ‹€๋ฆฐ์˜ ๋‚ด๋ถ€ ๋™์ž‘์Œ๋ฃŒ๋ผ๋Š” ์Šˆํผํด๋ž˜์Šค์™€ ์ด๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ฝœ๋ผ๋ผ๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค์ฝœ๋ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋•Œ ์Šˆํผํด๋ž˜์Šค์˜ ๊ณต๊ฐ„์— ์Œ๋ฃŒ์˜ ๋‚ด์šฉ์„ ๋‹ด๋Š” ๊ฐ์ฒด๊ณต๊ฐ„์— ์ฝœ๋ผ์˜ ๋‚ด์šฉ์„ ๋‹ด๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์ด ์ƒ์„ฑ๋œ๋‹ค.์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ฝœ๋ผ์˜ ์ธ์Šคํ„ด์Šค๋Š” ์Œ๋ฃŒ์˜ ๊ณต๊ฐ„์„ ๋‹ด๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ์Œ๋ฃŒ์˜ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ , ์ฝœ๋ผ์˜ ๊ธฐ๋Šฅ์„ ๋‹ด๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ์ฝœ๋ผ์˜ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.var a: Drink = Cola() // ์—…์บ์ŠคํŒ…. ์Œ๋ฃŒ์˜ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉ. ์ฝœ๋ผ์˜ ์ถ”๊ฐ€๊ณต๊ฐ„์€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€var b: Cola = Cola()..