1 ์ฝ๋ฉ ์ค๋นํ๊ธฐ (๋ก๊ทธ)
ํต์ฌ ํค์๋
- ๋ก๊ทธ(Log)
: ์ฝ๋ฉ์ ํ ๋ ์ฝ๋์ ํ๋ฆ์ ํ์ ํ๊ธฐ ์ํด ์ฑ ์ธ๋ถ์ ์ถ๋ ฅํ๋ ์ ๋ณด
๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ๋งค๋ฒ ๋๋ฒ๊น ํ ํฌ์ธํธ๋ฅผ ์ง์ ํด์ผ ํ๋ ๋ถํธํจ์ด ์๋ ๋ฐ๋ฉด,
๋ก๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฒ ์ค์ ์ผ๋ก ํญ์ ํด๋น ์ฝ๋์ ํ๋ฆ์ ํ์ธํ ์ ์์ - ๋ก๊ทธ์บฃ(Logcat)
: ์ถ๋ ฅ๋๋ ๋ก๊ทธ๋ฅผ ๋ชจ์์ ๋ณด๋ ๋๊ตฌ
๋ด๊ฐ ์์ฑํ ์ฑ์ ๋ก๊ทธ๋ง ๋ณผ ์๋ ์๊ณ , ํ๊ทธ๋ฅผ ์ ํ์ฉํ๋ฉด ํด๋น ํ๊ทธ๋ฅผ ํํฐ๋ก ์ฌ์ฉํด์ ํน์ ๋ก๊ทธ๋ง ํ์ธ ๊ฐ๋ฅ - ์ฑ์ ์คํํ๋ฉด ๋ง์ ์์ ๋ก๊ทธ๊ฐ ์์ฑ๋จ
- ์ํ๋ ๋ก๊ทธ๋ฅผ ์ฐพ๊ธฐ ์ํด ์๋๋ก์ด๋ ์คํ๋์ค์ Log ํด๋์ค๋ฅผ ์ฝ๋ ์ค๊ฐ์ค๊ฐ์ ์ ์ ํ๊ฒ ์ฌ์ฉํด์ผ ํจ
--> ์ฑ์ ์คํ ํ๋ฆ ํน์ ๊ฒฐ๊ด๊ฐ์ ํ์ธํ ์ ์์
Log ํด๋์ค์ ๋ค์ฏ๊ฐ์ง ํจ์
- v(verbose)
- i(information)
- d(debug)
- w(warning)
- e(error)
ํจ์ | ์๋ฏธ | ๋ด์ฉ |
Log.v() | verbose | ์์ธํ ๋ก๊ทธ ๋ด์ฉ์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉ |
Log.d() | debug | ๊ฐ๋ฐ์ ํ์ํ ๋ด์ฉ์ ์ถ๋ ฅ(๊ฐ๋ฐ์์ฉ) |
Log.i() | information | ์ ๋ณด์ฑ์ ์ผ๋ฐ์ ์ธ ๋ฉ์์ง ์ ๋ฌ์ฉ |
Log.w() | warning | ์๋ฌ๋ ์๋์ง๋ง ๊ฒฝ๊ณ ์ฑ ๋ฉ์์ง ์ ๋ฌ |
Log.e() | error | ์ค์ ์๋ฌ ๋ฉ์์ง ์ถ๋ ฅ ์ฉ๋ |
๋ก๊ทธ์ ํ์ฉ
์๋ฎฌ๋ ์ดํฐ(๋๋ ์ค๋งํธํฐ) ํ๋ฉด ๋์ ์๋๋ก์ด๋ ์คํ๋์ค๊ฐ ์ ๊ณตํ๋ ๋ก๊ทธ์ ์ ์๋์ด ์๋ ํจ์๋ฅผ ์ฌ์ฉํด์ ํ์ธ
Log.d("ํ๊ทธ", "์ถ๋ ฅ ๋ฉ์ธ์ง");
- Log.d์์ d๋ debug๋ฅผ ์๋ฏธ
- ์ฒซ ๋ฒ์งธ ์ธ์: ๊ฒ์ ์ฉ๋๋ก ์ฌ์ฉ๋๋ "ํ๊ทธ"๋ฅผ ์ ๋ ฅ
- ๋ ๋ฒ์งธ ์ธ์: '์ค์ ์ถ๋ ฅํ ๋ฉ์ธ์ง'๋ฅผ ์ ๋ ฅ
๐ก ์ค์ต
Log.d("BasicSyntax", "๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. method = Log.d")
(1) ๋ค์ ์ฝ๋๋ฅผ ์ ๋ ฅ
package net.flow9.thisiskotlin.basicsyntax
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d("BasicSyntax", "๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. method = Log.d")
}
}
(2) MainActivity.kt ํ์ผ์ ์ด๊ณ ๋ค์ ์ฝ๋๋ฅผ setContentView... ๋ฐ์ ์
๋ ฅ
(3) ์๋๋ก์ด๋ ์๋ฎฌ๋ ์ดํฐ ๋์
(4) ํ๋จ์ [Logcat] ํญ์ ํด๋ฆญํ์ฌ ํ์ธ
ํํฐ์ฐฝ์ ์
๋ ฅ: package:mine level:debug tag:BasicSyntax
→ ์์ค ์ฝ๋์ Log.d ํจ์์ ์
๋ ฅํ๋ ํด๋์ค์ d๋ฅผ ์๋ฏธํ๋ debug๋ฅผ package:mine ๋ค์ level:debug๋ผ๊ณ ์
๋ ฅ ํ
"ํ๊ทธ"๋ก ์
๋ ฅํ๋ BasicSyntax๋ฅผ ์๋ฏธํ๋ tag:BasicSyntax ์
๋ ฅ
2 ๋ณ์
๋ณ์(Variable) - var
- ๊ฐ์ ์์๋ก ๋ฉ๋ชจ๋ฆฌ(์ ์ฅ ๊ณต๊ฐ)์ ์ ์ฅํ๊ณ , ๊ทธ ์ ์ฅ ๊ณต๊ฐ์ ์ด๋ฆ์ ๋ถ์ฌํ ๊ฒ
- ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ๊ตฌ์ฑ
- ๋ณ์์ ์ด๋ฆ์ ๋ถ์ฌํ๊ณ ๊ฐ์ ์ ๋ ฅํ๋ ํ์๋ ๋ฉ๋ชจ๋ฆฌ์ ํน์ ์์น์ ์ด๋ฆํ๋ฅผ ๋ถ์ด๊ณ ๊ฐ์ ๋ด์๋๋ ๊ฒ๊ณผ ๊ฐ์
- ์์ค ์ฝ๋์์ ํด๋น ๊ฐ์ ์ฌ์ฉํ๊ณ ์ ํ ๋ ์์์ ๋ถ์๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
๋ณ์ ์ ์ธ๋ฐฉ์
var ๋ณ์๋ช
(์ด๋ฆ) = ๊ฐ
โ
(์์)
var myName = "ํ๊ธธ๋" // ๋ณ์๋ช
myName์ ๋ฌธ์์ด "ํ๊ธธ๋"์ ์
๋ ฅ
์ฒซ์งธ, ๋ณ์ ์ ์ธ๊ณผ ๋์์ ๊ฐ ๋ฃ๊ธฐ
- ์ ๋ ฅ๋๋ ๊ฐ์ผ๋ก ํ์ ์ ์ถ๋ก ํ ์ ์์
- ๊ฐ์ด ์ ๋ ฅ๋๋ ์๊ฐ ํด๋น ๊ฐ์ ํํ(๋ฌธ์, ์ซ์, ๋ถ๋ฆฌ์ธ ๋ฑ)๋ก ๋ณ์์ ํ์ ์ด ๊ฒฐ์ ๋จ
var ๋ณ์๋ช
: ํ์
๋ณ์๋ช
= ๊ฐ
โ
(์์)
var myAge: Int // ๋ณ์๋ช
myAge๋ฅผ Int ํ์
์ผ๋ก ์ ์ธ
myAge = 27 // ์ซ์ '27'์ ์
๋ ฅ
๋์งธ, ๊ฐ์ผ๋ก ์ด๊ธฐํํ์ง ์๊ณ ์ ์ธ๋ง ํ๊ณ ์ฌ์ฉํ๊ธฐ
- ์ ์ธ๋ง ํ ๊ฒฝ์ฐ, ๋ฐ๋์ ๋ณ์๋ช ์์ ์ฝ๋ก (:) ๊ตฌ๋ถ์๋ฅผ ๋ถ์ฌ์ ํ์ (์๋ฃํ)์ ์ง์ ํด์ผ ํจ
์ ๋๊ฐ์ง ์์๋ก ๋ณ์๋ ์ต์ด ์ ์ธ ์์ ํ์
์ด ๊ฒฐ์ ๋๋ค๋ ๊ฒ์ ์์ํ ์ ์์
๋ณ์๋ ํ๋ฒ ํ์
์ ๊ฒฐ์ ํ๋ฉด ๋์ผํ ํ์
์ ๊ฐ๋ง ๋ด์ ์ ์์ผ๋ฉฐ, int ํ์
์ ๋ณ์์ string์ ์
๋ ฅํ๋ฉด ์๋ฌ ๋ฐ์ํจ
Kotlin ๋ฐ์ดํฐ ํ์ (์๋ฃํ)
๊ตฌ๋ถ | ๋ฐ์ดํฐ ํ์ | ์ค๋ช | ๊ฐ์ ๋ฒ์ ๋ฐ ์ | |
์ซ์ํ | ์ค์ํ | Double | 8๋ฐ์ดํธ (64๋นํธ) | -1.7E+308์ ๊ทผ์ฟ๊ฐ ~ 1.7E+308์ ๊ทผ์ฟ๊ฐ |
Float | 4๋ฐ์ดํธ (32๋นํธ) | -3.4E+38์ ๊ทผ์ฟ๊ฐ ~ 3.4E+38์ ๊ทผ์ฟ๊ฐ | ||
์ ์ํ | Long | 8๋ฐ์ดํธ (64๋นํธ) | -2E63 ~ 2E63-1 | |
int | 4๋ฐ์ดํธ (32๋นํธ) | -2,147,483,648 ~ 2,147,483,647 | ||
Short | 2๋ฐ์ดํธ (16๋นํธ) | -32,768 ~ 32,767 | ||
Byte | 1๋ฐ์ดํธ (8๋นํธ) | -128 ~ 127 | ||
๋ฌธ์ํ | Char | 1๊ฐ์ ๋ฌธ์ (16๋นํธ) | ‘๊ธ’ (์ธ๋ฐ์ดํ) | |
String | ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์ | “์ฌ๋ฌ ๊ฐ์ ๊ธ์์ ๋๋ค.” (์๋ฐ์ดํ) | ||
๋ถ๋ฆฌ์ธํ | Boolean | true, false ๋ ๊ฐ์ง ๊ฐ | true ๋๋ false |
- ์ปดํจํฐ์ ํ๋์จ์ด ์ฌ์์ ํ์ ์ ์ด๋ฏ๋ก ์๋ง๊ฒ ์๋ฃํ์ ์ฌ์ฉํ๋ ๊ฒ ์ค์
- ์ฐธ๊ณ ๋ก ํ๊ธ์ ๊ฒฝ์ฐ ํ ๊ธ์ ์ ์ฅ์ Byte๊ฐ ์๋ Char๋ฅผ ์ฐ๋ ๊ฒ ์ข์ (์์ด์ ๋ฌ๋ฆฌ 2๋ฐ์ดํธ์ฉ ์ฌ์ฉ)
๊ธฐ๋ณธ ํ์
- ๋ณ์์ ์ ์ฅ๋๋ ๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ฏธ๋ฆฌ ์ ํด์ ธ ์๋ ํ์
- Int๋ 2,147,483,647๊น์ง๋ง ์ ์ฅํ ์ ์๊ณ , Byte๋ 127๊น์ง๋ง ์ ์ฅ ๊ฐ๋ฅ
- Byte์ ์ ์ฅ ๋ฒ์๋ฅผ ๋์ด์๋ 128์ ์ ๋ ฅํ ๊ฒฝ์ฐ ์ ํ ๋ค๋ฅธ ์ซ์๊ฐ ๋จ
- String์ ๊ฒฝ์ฐ๋ ์๋ฐ์ดํ(" ") ์ฌ์ด์ ๋ช ๊ธ์๊ฐ ๋ค์ด๊ฐ๋ ์๊ด์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํฌ๊ธฐ๋ฅผ ํน์ ํ ์ ์์, ๊ธฐ๋ณธํ์ X
Double
var doubleValue: Double
doubleValue = 3.141592
- ์์์ ์ด ์๋ ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ
Float
var floatValue: Float
floatValue = 3.141592F
- Double๊ณผ ๋์ผํ ์ฉ๋์ด์ง๋ง ๋ ์์ ๋ฒ์์ ์ซ์๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉ
- ์๋๋ก์ด๋ ์คํ๋์ค๋ Double๊ณผ Float์ ๊ตฌ๋ถํ๊ธฐ ์ํด Float์ ๊ฒฝ์ฐ ์ซ์ ๋์ 'F'๋ฅผ ๋ถ์
Int
var intValue: Int
intValue = 2147483647
// ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด์ ์ธ๋๋ฐ(_)๋ก ์๋ฆฟ์๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค.
// ์ธ๋๋ฐ๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ธฐ ์ฝ๊ฒ ํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ์ปดํจํฐ๋ ์์ ๊ฐ๊ณผ ๋์ผํ๊ฒ ์ธ์ํฉ๋๋ค!
var intValue: Int
intValue = 2_147_483_647
- ์์์ ์ด ์๋ ์ ์ซ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ
Long
var longValue: Long
longValue = 2147483647L
- Int๋ณด๋ค ํฐ ๋ฒ์์ ์ ์๋ฅผ ์ ์ฅ
- Double๊ณผ Float์ ๊ด๊ณ์ฒ๋ผ Int์ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ์ซ์์ ๋์ 'L'์ ๋ถ์
- Long ํ์ ์ ๊ฒฝ์ฐ์๋ ์ค์ ํ ๊ธ๊ผด์ ๋ฐ๋ผ ์ซ์ 1๊ณผ ๊ตฌ๋ถ์ด ์ด๋ ค์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ฌธ์๋ฅผ ์ฌ์ฉ
๐ก์ ์ํ ๋ณ์์๋ ์ค์ํ ๊ฐ์ ์
๋ ฅํ ์ ์์
๐ก๊ฐ์ ์ซ์๋ผ๋ ์๋ฃํ ํ์
์ด ๋ค๋ฅด๋ฉด ์
๋ ฅํ ์ ์๊ณ , ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ ํ์
(์๋ฃํ)์ ๋ณํํ์ฌ ์
๋ ฅ
Short์ Byte
var shortValue: Short = 32_767
var byteValue: Byte = 127
- Int๋ณด๋ค ์์ ๋ฒ์์ ์ ์๋ฅผ ์ ์ฅ
๐ก ํ์ ์ ์ง์ ํ์ง ์์ ์ซ์ ์ ์ฅ๋ฐฉ์
์ ์์ ๋ค์ ์ดํด๋ณด๋ฉด, ์ ์ํ ๋ณ์ ๋ค์์ ํญ์ ์ฝ๋ก (:) ๊ตฌ๋ถ์๋ฅผ ์ฌ์ฉํด์ ํ์
์ ์ง์ ํจ
์ด์ ๋ ํ์
์ ์ง์ ํ์ง ์์ ์ผ๋ฐ ์ซ์ ๊ฐ์ ๋ชจ๋ Int ํ์
์ผ๋ก ์ธ์ํด ์๋์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ธฐ ๋๋ฌธ
var byteValue: Byte = 127 // 127์ด Byte ํ์
์ผ๋ก ์ ์ฅ
var byteValue2 = 127 // 127์ด Int ํ์
์ผ๋ก ์ ์ฅ
โ
var floatValue: Float = 3.14F // 3.14๊ฐ Float ํ์
์ผ๋ก ์ ์ฅ
var doubleValue = 3.14 // ๋์ F๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด Double๋ก ์ ์ฅ
Char
var charValue = 'A'
- ํ๋์ ๊ธ์๋ง ์ธ๋ฐ์ดํ(' ')๋ก ๊ฐ์ธ์ ์ ์ฅ
- ํ์
์ ํน์ ํ์ง ์์๋ ์ธ๋ฐ์ดํ ์์ ํ๋์ ๊ธ์๋ง ์ง์ ํ๊ธฐ ๋๋ฌธ์ Char๋ก ์ ์ฅ๋จ
String
var stringValue: String = "ABCDEF"
- ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๋ฅผ ์ง์
- ๊ธฐ๋ณธ ํ์
์๋ ํฌํจ๋์ง ์์ง๋ง ๊ฑฐ์ ๋ชจ๋ ์ปดํจํฐ ์ธ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ์
Boolean
var boolValue = true
- true, false ๋ ์ค์ 1๊ฐ์ ๊ฐ์ ์ ์ฅ
- ์ฃผ๋ก ์กฐ๊ฑด๋ฌธ์์ ์์ฌ๊ฒฐ์ ์ ํ๊ธฐ ์ํ ์ฉ๋๋ก ๋ง์ด ์ฌ์ฉ
๐ก Int 2,147,483,647 ๊ฐ์ 1์ ๋ํ๋ฉด?
์์์ ์ ์ฅ
- Int๋ 32๋นํธ๊น์ง ํํํ ์ ์๊ธฐ ๋๋ฌธ์ 32๊ฐ์ ๋นํธ๋ก ๊ตฌ์ฑ
- Int 2,147,483,647์ 2์ง์๋ก ๋ณํํ๋ฉด 32๊ฐ์ ๋นํธ๋ก ๋ค์๊ณผ ๊ฐ์ด ํํ
์) 0111 1111 1111 1111 1111 1111 1111 1111
๊ฐ์ฅ ์์ ๋นํธ 0์ ๊ฐ์ด ์๋ ๋ถํธ ๋นํธ๋ก, ๋ถํธ ๋นํธ๊ฐ 0์ด๋ฉด ์์(+), 1์ด๋ฉด ์์(-)
2์ ๋ณด์์ ์ ๋ ฅ๊ฐ์ ์ ํ
- ๋๋ถ๋ถ์ ์ปดํจํฐ๋ ์์๋ฅผ '2์ ๋ณด์๋ฒ'์ผ๋ก ๊ณ์ฐํ์ฌ ์ ์ฅ
- ์ด๋ ์์์ ์ ๋๊ฐ์ 2์ง์๋ก ๋ฐ๊พธ๊ณ (1์ ๋ณด์), ์ฌ๊ธฐ์ ๋ค์ 1์ ๋ํ๋(2์ ๋ณด์) ๊ฒ์ ๋งํจ
-2,147,483,648์ ๊ฐ(1์ ๋ณด์)์ 1์ ๋ํ ๊ฒฐ๊ณผ์ด๋ฏ๋ก ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ 1๋ถํฐ ์๋ฆฌ๊ฐ ๋ฐ๋๋ฉด์ ๋ชจ๋ 0์ผ๋ก ๋ฐ๋ - Int ํ์
์ ์ ์ฅํ ์ ์๋ ๊ฐ์ฅ ํฐ ๊ฐ์ธ 2,147,483,647์ ์ด์ง์๋ก ํ์ํ๋ฉด
0111 1111 1111 1111 1111 1111 1111 1111
์ ๊ฐ์ 1์ ๋ํ๋ฉด ๋ชจ๋ ๊ฐ์ด ์ฌ๋ฆผ์ด ๋๋ฉด์ ์์ -2,147,483,648์ด ๋๊ณ ์๋์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์
1000 0000 0000 0000 0000 0000 0000 0000
Byte๋ Long๋ ๋์ผํ ์๋ฆฌ๋ก ๋์ํจ
๋ฐ๋ผ์ ๋ฐ์ดํฐ ํ์ ์ ์ ์ธํ ๋๋ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ํญ์ ๊ณ ๋ คํด์ผ ํจ
โ
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
โ
var myName = "ํ๊ธธ๋"
var myAge: Int
myAge = 27
myAge = myAge + 1
Log.d("BasicSyntax", "myName = $myName, myAge = $myAge")
}
}
// ๋ก๊ทธ ๊ฒฐ๊ณผ ๊ฐ: myName = ํ๊ธธ๋, myAge = 28
๐ก ๋ฌธ์์ด ํ
ํ๋ฆฟ
var name="ํ๊ธธ๋"
Log.d("BasicSyntax", "์ ์ด๋ฆ์ $name ์
๋๋ค.")
// ์ถ๋ ฅ: ์ ์ด๋ฆ์ ํ๊ธธ๋ ์
๋๋ค.
- ์ฝํ๋ฆฐ์์๋ ๋ํ๊ธฐ(+) ์ฐ์ฐ์ผ๋ก 2๊ฐ์ ๋ฌธ์๋ฅผ ํ๋๋ก ํฉ์น ์ ์์
์) "ํ" + "๊ธธ๋"์ฒ๋ผ 2๊ฐ์ ๋ฌธ์์ด์ ๋ํ๋ฉด "ํ๊ธธ๋"๊ณผ ๊ฐ์ด ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ค์ด ์ค - ์ถ๊ฐ๋ก ๋ฌธ์์ด์ ๋ณด๋ค ์ฝ๊ฒ ๋ค๋ฅผ ์ ์๋ ๋ฌธ์์ด ํ
ํ๋ฆฟ๋ ์ ๊ณต
๋ฌธ์์ด ๋ด๋ถ์์ ๋ฌ๋ฌ($) ๊ธฐํธ๋ฅผ ๋ฃ์ผ๋ฉด ํด๋น ์์ญ์ด ๋ฌธ์๊ฐ ์๋ ์ฝ๋๋ผ๋ ๊ฒ์ ์ ๋ฌ
์ฃผ์ํ ์
"์ ์ด๋ฆ์ $name(๊ณต๋ฐฑ) ์
๋๋ค."
// ์ด์ด์ง๋ ๋ฌธ์์ด๊ณผ์ ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ๋ฌธ์์ด๋ก ์ธ์ํจ
- $๋ณ์ ๋ค์์ ์ด์ด์ง๋ ๋ฌธ์๊ฐ ์๋ค๋ฉด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด์ผ ํจ
์ฝ๊ธฐ ์ ์ฉ ๋ณ์ Val (Value)
- ๋ณ์์ ๋ค๋ฅธ ์ ์ธ ๋ฐฉ๋ฒ - ์ฝ๊ธฐ ์ ์ฉ ๋ณ์ val
- var๊ณผ๋ ๋ค๋ฅด๊ฒ ํ ๋ฒ ์ ๋ ฅ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์. ๋ฐ๋ผ์ ๋ณํ์ง ์๋ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ๋ ฅํด๋ ๋ ์ฌ์ฉ
- ์์๋ผ๊ณ ๋ ๋ถ๋ฅด๊ธฐ๋ ํ์ง๋ง ์์์๋ ์๋ฏธ๊ฐ ์กฐ๊ธ ๋ค๋ฆ
์ฝ๊ธฐ ์ ์ฉ ๋ณ์ val ์ ์ธํ๊ธฐ
val ๋ณ์๋ช
(์ด๋ฆ) = ๊ฐ
์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ณ์์ ๋์ผํ๋ฉฐ ์ด๋ฆ ์์ val์ ๋ถ์ด๋ฉด ์ฝ๊ธฐ ์ ์ฉ ๋ณ์๊ฐ ๋จ
val roadName = "๊ตญ์ ๊ธ์ต๋ก" // ๋ฏธ๋ฆฌ ์ง์
var address = roadName + "8๊ธธ" // ํ์ํ ๋ ์กฐํฉํด์ ์ฌ์ฉ
๋ณํ์ง ์๋ ๊ฐ์ ๋ฏธ๋ฆฌ ์ง์ ํด๋๊ณ ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ๊ณผ ์กฐํฉํด์ ์ฌ์ฉ
val language = "kotlin"
language = "java" // ERROR, val์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
val๋ก ์ ์๋ ๋ณ์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์
์์ const
const val PI = 3.141592
- ์์๋ ์ฃผ๋ก ๊ธฐ์ค์ด ๋๋ ๋ณํ์ง ์๋ ๊ฐ์ ์ ๋ ฅํด๋ ๋ ์ฌ์ฉ
- ์ฝ๊ธฐ ์ ์ฉ ๋ณ์์ธ val ์์ const ํค์๋๋ฅผ ๋ถ์ฌ์ ์ ์ธ
- val๊ณผ ๊ฐ์ด ์ฝ๊ธฐ ์ ์ฉ์ธ ๊ฒ์ ๋์ผํ์ง๋ง, ์ปดํ์ผ ์์ ๊ฐ์ด ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์
Int, Long๊ณผ ๊ฐ์ ๊ธฐ๋ณธํ๊ณผ ๋ฌธ์์ด์ธ String๋ง ์ ๋ ฅํ ์ ์์
์ฝ๋ฉ ์ปจ๋ฒค์
- ๊ตฌ์ฑ์๋ค์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ท์น
- ๊ท๋ชจ๊ฐ ํฐ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ฒ ๋ช ์ด์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํจ๊ป ์ผํ๊ธฐ๋ ํจ
- ๊ฐ์์ ๋ฐฉ์์ผ๋ก ์ฝ๋ฉํ๋ฉด ๊ฐ๋ฐ์ด ์๋ฃ๋ ๋ค์ ์ค๋ฅ๋ฅผ ์์ ํ๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ฅผ ํ ๋ ์ฝ๋๋ฅผ ๋ถ์ํ๊ธฐ ์ด๋ ค์
- ๋๋ถ๋ถ์ ํ์ฌ์์๋ ์ต์ด ๊ฐ๋ฐ์์ ์ ์ง๋ณด์ ๋ด๋น์๊ฐ ๋ค๋ฅด๊ธฐ์ ํ์
ํด๋์ค๋ช
class MainActivity{
val name = "kotlin"
var age = 17
fun getFullName(): String{
...
}
}
- ํด๋์ค(Class): ์ฝ๋๋ฅผ ์์๋ณด๊ธฐ ์ฝ๊ฒ ํ๋์ ํ์ผ์ ๋ชจ์ ๋์ ๊ฒ
- ํด๋์ค๋ ์์ ๊ฐ์ด ๋ณ์์ ํจ์๋ฅผ ํฌํจ
- ๋์ฒด๋ก ํด๋์ค์ ๋ค์ด๋ฐ ์ปจ๋ฒค์
(๋ช
๋ช
๊ท์น)์ ์บ๋ฉ ์ผ์ด์ค(Camel Case)๋ฅผ ์ฌ์ฉ
๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก, ๋๋จธ์ง ๊ธ์๋ ์๋ฌธ์๋ก ํ๊ธฐ, ์๋ก์ด ๋จ์ด๊ฐ ๋ํ๋๋ฉด ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ํ๊ธฐ - ํด๋์ค๋ช ์ ์ผ๋ฐ์ ์ผ๋ก ํ์ผ๋ช ๊ณผ ๋์ผํ์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋
- ์์์ ์์ฑํ ์ฝ๋ ์ค์ class MainActivity...๋ก ์์ํ๋ ์ฝ๋๊ฐ ์๋๋ฐ, ์ฌ๊ธฐ์ MainActivity๊ฐ ํด๋์ค๋ช
ํจ์๋ช ๊ณผ ๋ณ์๋ช
fun onCreateActivity()
// ์ฒซ ๊ธ์์ธ o๋ ์๋ฌธ์, ์๋ก์ด ๋จ์ด(Create, Activity)์ ์ฒซ ๊ธ์(C, A)๋ ๋๋ฌธ์
var intValue: Int
// ์ฒซ ๊ธ์์ธ i๋ ์๋ฌธ์, ์๋ก์ด ๋จ์ด(Value)์ ์ฒซ ๊ธ์(V)๋ ๋๋ฌธ์
- ์บ๋ฉ ์ผ์ด์ค๋ฅผ ๋ฐ๋ฅด๋ฉฐ ์ฒซ ๊ธ์๋ง ์๋ฌธ์๋ก, ์ดํ ์๋ก์ด ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ํ๊ธฐ
์์๋ช
const val HELLO: String = "์๋
"
const val HOW_ARE_YOU: String = "์ด๋ป๊ฒ ์ง๋ด?"
์์๋ช
์ด 2๊ฐ์ ๋จ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋ค๋ฉด ๋จ์ด ์ฌ์ด๋ฅผ ์ธ๋๋ฐ(_)๋ก ๊ตฌ๋ถํ๋ ์ค๋ค์ดํฌ ์ผ์ด์ค(Snake Case)๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
- ์์๋ช ์ ๋ชจ๋ ๋๋ฌธ์๋ก ์์ฑ
๐ก ์์ฆ์ ํจ์๋ช ๊ณผ ๋ณ์๋ช ์์ฑ ๊ท์น
- ์์ฆ์ ํด๋์ค๋ช ์ ์ ์ธํ ํจ์๋ช ๊ณผ ๋ณ์๋ช ์ ์ค๋ค์ดํฌ ์ผ์ด์ค๋ก ์์ฑํ๋ ํ์ฌ๋ ๋ง์์ง (๊ฐ๋ ์ฑ์ด ์ข๊ธฐ ๋๋ฌธ)
- ๊ทธ๋ฌ๋ ์ค๋ค์ดํฌ ์ผ์ด์ค์ ๊ฒฝ์ฐ ์์๋ช
๋ง ๋๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๋๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉํจ์ ์ ์
ex. fun on_create_activity() - ๊ฐ์ธ ์ ํธ๋์ ๋ฐ๋ผ ์บ๋ฉ ์ผ์ด์ค, ์ค๋ค์ดํฌ ์ผ์ด์ค ์ค ํ ๊ฐ์ง๋ฅผ ์ ํํ ์ ์์ง๋ง,
ํ๋ก์ ํธ๋ฅผ ํ๋์ ์ผ์ด์ค๋ก ์์ํ๋ค๋ฉด ์ผ๊ด์ฑ์ ์ง์ผ์ผ ํจ
๋ค์ฌ์ฐ๊ธฐ
class MainActivity{ // ์๋ก์ด ๋ธ๋ก์ ์์
var newVariable = 50 // ์ผ๋ฐ์ ์ผ๋ก ๋งจ ์์ ๊ณต๋ฐฑ 4์นธ ๋ค์ฌ์ฐ๊ธฐ ์ฌ์ฉ
fun on_create_activity(){ // ๋ค์ ์๋ก์ด ๋ธ๋ก์ ์์
var variable = 10 // ์ถ๊ฐ ๊ณต๋ฐฑ 4์นธ(8์นธ) ๋ค์ฌ์ฐ๊ธฐ
Log.d("BasicSyntax", "๋ณ์์ ๊ฐ์ $variable ์
๋๋ค.") // ์ถ๊ฐ ๊ณต๋ฐฑ 4์นธ(8์นธ) ๋ค์ฌ์ฐ๊ธฐ
} // ๊ณต๋ฐฑ 4์นธ ๋ค์ฌ์ฐ๊ธฐ
}
- ์๋ก์ด ์ฝ๋ ๋ธ๋ก์ด ์์๋๋ฉด ์คํ์ด์ค๋ฐ(Spacebar) ๋๋ ํญ(Tab) ํค๋ก ๋์ผํ ๊ฐ๊ฒฉ๋งํผ ๋ค์ฌ์ฐ๊ธฐ
- ์ฝ๋ฉ ๊ท์น์ ํตํ์ด์ ๊ฐ์ฅ ์ค์ํ ๊ท์น
- ์ฝ๋์ ๋ค์ฌ์ฐ๊ธฐ(Indent)๊ฐ ๋์ด ์์ง ์๋ค๋ฉด ํ๋ก๊ทธ๋๋จธ๋ก์ ๋ฉด์ ์ ๋ณผ ๊ธฐํ์กฐ์ฐจ ์์ ์ ์์ ์ ๋๋ก ์ค์
3 ์กฐ๊ฑด๋ฌธ
- ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ์ ๋ฌ๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
- '์ ์ด๋ฌธ'์ด๋ผ๊ณ ๋ ํ๋๋ฐ, ์ด๋ ์ฝ๋์ ํ๋ฆ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ๊ฟ ์ ์๊ธฐ ๋๋ฌธ
- ์ ์ด๋ฌธ ์ข ๋ฅ: (์กฐ๊ฑด๋ฌธ) if, when / (๋ฐ๋ณต๋ฌธ) for, while
- if๋ ์ต์ ์ ๊ฒฝ์ฐ์ ๋ชจ๋ ์กฐ๊ฑด์ ๋น๊ตํ๊ธฐ ๋๋ฌธ์, ๋ง์์ง ๋๋ when์ ์ฌ์ฉ
์กฐ๊ฑด๋ฌธ if
๋ง์ฝ ๋ด๊ฐ ๊ฐ์ง ๋ณต๊ถ ๋ฒํธ๊ฐ 1, 2, 3, 4, 5, 6์ด๊ณ ์ด๋ฒ ์ฃผ ๋น์ฒจ ๋ฒํธ๊ฐ 5, 6, 7, 8, 9, 10์ผ ๊ฒฝ์ฐ
๋น์ฒจ ์ฌ๋ถ๋ฅผ ์กฐ๊ฑด๋ฌธ ์ค ํ๋์ธ if๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ
var myNumbers = "1, 2, 3, 4, 5, 6"
var thisWeekNumbers = "5, 6, 7, 8, 9, 10"
if (myNumbers == thisWeekNumbers){ // if๋ฌธ ์์(ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด if ๋ธ๋ก ๋ด์ ์ฝ๋๋ฅผ ์ํ)
Log.d("Lotto", "๋น์ฒจ๋์์ต๋๋ค!")
} // if๋ฌธ ๋
๋ด ๋ฒํธ์ธ myNumbers์ ์ด๋ฒ ์ฃผ ๋น์ฒจ ๋ฒํธ์ธ thisWeekNumbers๊ฐ ๊ฐ์์ง๋ฅผ
์กฐ๊ฑด๋ฌธ์ธ if๋ก ๋น๊ตํ ํ ๊ฐ์ ๊ฒฝ์ฐ์๋ "๋น์ฒจ๋์์ต๋๋ค."๋ฅผ ์ถ๋ ฅ
๊ทธ๋ฌ๋ ์กฐ๊ฑด์ด ๋ง์ง ์์ ๊ฒฝ์ฐ ๋ฏธ์ถ๋ ฅ
- Kotlin์์๋ if์ when, ๋ ๊ฐ์ง ํํ์ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉ
if ๋ฌธ์ ์ฌ์ฉํ๊ธฐ ์ํ ์กฐ๊ฑด
์ข ๋ฅ | ์ฐ์ฐ์ | ์๋ฏธ | ์ฌ์ฉ ์ | ๊ฒฐ๊ณผ |
๋น๊ต ์ฐ์ฐ์ | > | ์ผ์ชฝ์ด ํฌ๋ฉด true, ์์ผ๋ฉด false | 1 > 2 | false |
< | ์ผ์ชฝ์ด ์์ผ๋ฉด true, ํฌ๋ฉด false | 1 < 2 | true | |
>= | ์ผ์ชฝ์ด ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false | 1 >= 2 | false | |
<= | ์ผ์ชฝ์ด ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false | 1 <= 2 | true | |
== | 2๊ฐ ํญ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false (์ฃผ์: = ์ฌ์ฉํ๋ฉด ์ค๋ฅ) |
1 == 2 | false | |
!= | 2๊ฐ ํญ์ ๊ฐ์ด ๋ค๋ฅด๋ฉด true, ์๋๋ฉด false | 1 != 2 | true | |
๋ ผ๋ฆฌ ์ฐ์ฐ์ | && | ๋
ผ๋ฆฌ๊ณฑ ๋ ํญ์ด ๋ชจ๋ true์ผ ๋์๋ true, ์๋๋ฉด false |
(2 > 1) && (3 < 1) | false |
|| | ๋
ผ๋ฆฌํฉ ๋ ํญ ์ค ํ๋์ ํญ์ด true์ผ ๋์๋ true, ์๋๋ฉด false |
(2 > 1) || (3 < 1) | true | |
! | ๋ถ์ ๋จํญ ์ฐ์ฐ์ true๋ฅผ false๋ก, false๋ฅผ true๋ก ๋ฐ๊ฟ |
! (2 > 1) | false |
- if ๋ฌธ์ ์กฐ๊ฑด์์๋ ๋น๊ต ์ฐ์ฐ์(==, <, >)์ ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&, ||)๋ฅผ ์ฌ์ฉํ ์กฐ๊ฑด์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๋ Boolean ํ์ ์ธ ture(์ฐธ)์ false(๊ฑฐ์ง)๋ก ๋ํ๋จ
๊ธฐ๋ณธ์ ์ธ if ๋ฌธ
if (์กฐ๊ฑด์) {
// ์กฐ๊ฑด์์ด ์ฐธ์ผ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋ ์์ญ
}
- ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ true์ผ ๋ ์ฒ๋ฆฌํ ์ฝ๋๋ฅผ ์ฝ๋ ๋ธ๋ก { } ์์ ์์ฑ
- ์ค๊ดํธ { } ์์ ์ฝ๋๋ฅผ ์ฝ๋ ๋ธ๋ก(Code Block) ๋๋ ์ฝ๋ ์ค์ฝํ(Code Scope)๋ผ๊ณ ํจ
if ~ else ๋ฌธ
if (์กฐ๊ฑด์) {
// ์กฐ๊ฑด์์ด ์ฐธ์ผ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋ ์์ญ
} else {
// ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋ ์์ญ
}
๐ก ์ฃผ์
- ๊ฐ๋ฐ์๊ฐ ์ฝ๋์์ ๋จ๊ธด ์ฝ๋ฉ๊ณผ ๊ด๋ จํ ๋ฉ๋ชจ
- ์ฃผ์ ์ฒ๋ฆฌ๋ ๋ฌธ์ฅ์ ์ปดํจํฐ๊ฐ ํด์ํ์ง ์์
- ์ฃผ์ ์ฒ๋ฆฌ๋ฐฉ๋ฒ 3๊ฐ์ง
1) // ํ ์ค : ํ ์ค์ ์ฃผ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ. ์ค์ ์ด๋ ์์น์์ ์ฌ์ฉํด๋ ํด๋น ์ค์ ๋๊น์ง ์ฃผ์ ์ฒ๋ฆฌ
2) /* ์ฌ๋ฌ ์ค */ : ์ฌ๋ฌ ์ค์ ๊ฑธ์ณ์ ์ฃผ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ. /*๋ก ์์ํด์ ๋ค์์ ๋ํ๋๋ */๋ฅผ ๋ง๋ ๋๊น์ง ์ฃผ์ ์ฒ๋ฆฌ
3) /** ๋ฌธ์ํ */ : ์๋ํ ํด์ ์ฌ์ฉํด์ ๋ฌธ์ํํ ์ ๋ณด๋ฅผ ์์ฑํ ๋๋ / ๋ค์์ **๊ฐ 2๊ฐ - ์ฃผ์ ์ฌ์ฉ๋ ์ค์ํ์ง๋ง, ์์ฆ ์ถ์ธ๋ ํด๋์ค, ํจ์, ๋ณ์์ ์ด๋ฆ์ ์ ์ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ๋ ๊ฒ
๋์ด๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ฅผ a๋ผ๊ณ ์์ฑํ๊ณ ์ฃผ์ ์ฒ๋ฆฌํ๊ธฐ๋ณด๋ค๋, ๋ณ์๋ช ์์ฒด๋ฅผ age๋ก ๋ช ์์ ์ผ๋ก ๊ธฐ์ ํ๋ ๊ฒ์ ์ถ์ฒ
if ~ else if ~ else ๋ฌธ
if (์กฐ๊ฑด์1) {
// ์กฐ๊ฑด์1์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋ ์์ญ
} else if (์กฐ๊ฑด์ 2){
// ์กฐ๊ฑด์1์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด๊ณ , ์กฐ๊ฑด์2์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋ ์์ญ
} else {
// ์กฐ๊ฑด์1๊ณผ ์กฐ๊ฑด์2์ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ ์คํ๋๋ ์ฝ๋ ์์ญ
}
- ๋ง์ง๋ง else์๋ ์กฐ๊ฑด์์ ๋ฃ์ผ๋ฉด ์ค๋ฅ ๋ธ
- if ๋ฌธ๋ง 2๊ฐ ์ฌ์ฉํ ๊ฒฝ์ฐ 2๊ฐ์ if ๋ฌธ์ด ๋ชจ๋ ์คํ๋์ง๋ง,
else if ๋ฌธ์ ์ฌ์ฉํ๋ฉด ์์ if ๋ฌธ ์กฐ๊ฑด์์ ๋ง์กฑํ๋ฉด ๋ค์์ ๋์ค๋ else if ๋ฌธ์ ์คํ๋์ง ์์
๋ณ์์ ์ง์ if ๋ฌธ ์ฌ์ฉํ๊ธฐ
var a = 5
var b = 3
var bigger = if (a > b) a else b
a์ b๋ฅผ ๋น๊ตํ์ ๋ a๊ฐ b๋ณด๋ค ๋ ํฌ๋ฏ๋ก ๋ณ์ bigger์ '5'๋ฅผ ๋์
- if ๋ฌธ์ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์์ ๋ฐ๋ก ๋์ ํ ์ ์์
if ๋ฌธ์ ๋ง์ง๋ง ๊ฐ์ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ๊ธฐ
var a = 5
var b = 3
var bigger = if (a > b){
var c = 30
a // ๋ง์ง๋ง ์ค์ a ๊ฐ์ด ๋ณ์ bigger์ ์ ์ฅ๋จ
} else {
b
}
- if ๋ฌธ์ ์ฝ๋ ์์ญ์ด ์ฌ๋ฌ ์ค์ผ ๊ฒฝ์ฐ์๋ ๋ง์ง๋ง ์ค์ ๋ณ์ซ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์
๐ก๋ฌธ์์ด ํ ํ๋ฆฟ: ๋ฌธ์์ด ์์์ ์์ ์ฌ์ฉํ๊ธฐ
"๋ฌธ์์ด $๋ณ์ ๋ฌธ์์ด"
"๋ฌธ์์ด ${๋ณ์ + 1} ๋ฌธ์์ด"
โ
// ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด ๋ณ์ ํ๋๋ง ์์ ๋๋ { }๋ฅผ ์ฌ์ฉํ ์ ์์
"๋ฌธ์์ด ${๋ณ์} ๋ฌธ์์ด"
- ๋ณ์๊ฐ ํ๋์ธ ๊ฒฝ์ฐ์๋ $๋ณ์์ ํํ๋ก ์ฌ์ฉํ ์ ์์ง๋ง,
์ถ๊ฐ์ ์ธ ์ฐ์ฐ์์ด ํ์ํ ๊ฒฝ์ฐ์๋ ${์ฝ๋ ๋ธ๋ก} ์์ ์์์ ์ ๋ ฅํ๋ ํํ๋ก ์ฌ์ฉํ ์ ์์ - ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ์์ ์์ด ${๋ณ์} ๋ก ํํ๋ ๊ฐ๋ฅ
์กฐ๊ฑด๋ฌธ when
๋ค๋ฅธ ์ธ์ด์์์ ์์
switch (๋ณ์){
case ๋น๊ต๊ฐ:
// ๋ณ์ซ๊ฐ์ด ๋น๊ต๊ฐ๊ณผ ๊ฐ๋ค๋ฉด ์ด ์์ญ์ด ์คํ
case ๋น๊ต๊ฐ:
break;
}
- Kotlin์ ์ ์ธํ ๊ฑฐ์ ๋ชจ๋ ์ปดํจํฐ ์ธ์ด์์๋ switch๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ ํ๋ฌธ์ด๋ผ๊ณ ๋ถ๋ฆผ
- switch ๋ฌธ์ if ๋ฌธ์ ์ฐ์ฐ์์์ ์ฌ์ฉ๋๋ ๋น๊ต ์ฐ์ฐ์ ์ค์ ==๋ง ์ฌ์ฉํด์ ๊ฐ์ ๊ฐ์ธ์ง๋ฅผ ๋น๊ตํ๋ ์กฐ๊ฑด๋ฌธ
- Kotlin์ when ๋ฌธ์ ๋ค๋ฅธ ์ธ์ด์๋ ๋ค๋ฅด๊ฒ, ๊ฐ์ ๊ฐ๋ฟ๋ง ์๋๋ผ ๋ฒ์ ๊ฐ๋ ์ฒ๋ฆฌํ ์ ์๊ณ ์ฌ์ฉ ๋ฐฉ๋ฒ๋ ๋ ๋ง์
Kotlin์์์ when ๋ฌธ์ ํน์ ๊ฐ์ ์ ํํ ์ ์๋ switch์ ์ฌ์ฉ๋ฒ +
if ๋ฌธ์ ๋ฒ์ ๋น๊ต ๊ธฐ๋ฅ์ด ๋ํด์ง if ๋ฌธ์ ํ์ฅํ
์ผ๋ฐ์ ์ธ ํํ์ when
when (ํ๋ผ๋ฏธํฐ) {
๋น๊ต๊ฐ1 -> {
// ๋ณ์ซ๊ฐ์ด ๋น๊ต๊ฐ1๊ณผ ๊ฐ๋ค๋ฉด ์ด ์์ญ์ด ์คํ
}
๋น๊ต๊ฐ2 -> {
// ๋ณ์ซ๊ฐ์ด ๋น๊ต๊ฐ2์ ๊ฐ๋ค๋ฉด ์ด ์์ญ์ด ์คํ
}
else -> {
// ๋ณ์ซ๊ฐ์ด ์์์ ๋น๊ตํ ๊ฒ๋ค๊ณผ ๋ค๋ฅด๋ฉด ์ด ์์ญ์ด ์คํ
}
}
์์
var now = 10
when (now) {
8 -> {
Log.d("when", "ํ์ฌ ์๊ฐ์ 8์ ์
๋๋ค.")
}
9 -> {
Log.d("when", "ํ์ฌ ์๊ฐ์ 9์ ์
๋๋ค.")
}
else -> { // ์์ ๋ชจ๋ ์กฐ๊ฑด์ ๋ง์ง ์์ผ๋ฉด else ๋ค์ ์ฝ๋๊ฐ ์คํ
Log.d("when", "ํ์ฌ ์๊ฐ์ 9์๊ฐ ์๋๋๋ค.")
}
- when ๋ค์์ ๊ดํธ ( )๋ฅผ ์์ฑํ๊ณ ๊ดํธ ์์๋ ์ฃผ๋ก ๋น๊ต ๋์ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ ๋ณ์๋ช ์ ์ ๋ ฅ
- ๋ธ๋ก ๋ด๋ถ์์ ๋น๊ตํ ๊ฐ์ ํ์ดํ ์ฐ์ฐ์(Arrow Operator '->')๋ฅผ ์ฌ์ฉํด์ ์ ํ
- switch ๋ฌธ๊ณผ ๋น๊ต: ๊ฐ์ ๋น๊ตํ๋ case๊ฐ ์์ด์ง๊ณ , ๋น๊ต๊ฐ ๋ค์์ ์ฝ๋ก ์ด ํ์ดํ ์ฐ์ฐ์(->)๋ก ๋์ฒด, default๋ฅผ else๋ก
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํ๋์ when ๋ฌธ์์ ๋น๊ตํ ์๋ ์์
์ฝค๋ง๋ก ๊ตฌ๋ถํด์ ์ฌ์ฉํ๊ธฐ
var now = 9
when (now) {
8, 9 -> {
Log.d("when", "ํ์ฌ ์๊ฐ์ 8์ ๋๋ 9์ ์
๋๋ค.")
}
else -> { // ์์ ๋ชจ๋ ์กฐ๊ฑด์ ๋ง์ง ์์ผ๋ฉด else ๋ค์ ์ฝ๋๊ฐ ์คํ ๋ฉ๋๋ค.
Log.d("when", "ํ์ฌ ์๊ฐ์ 9์๊ฐ ์๋๋๋ค.")
}
}
โ
/** [๋ก๊ทธ์บฃ ์ถ๋ ฅ ๋ด์ฉ]
ํ์ฌ ์๊ฐ์ 8์ ๋๋ 9์ ์
๋๋ค. */
- ํน์ ๊ฐ์ ๋น๊ตํ๋๋ฐ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๊ฐ ๋์ผํ๋ค๋ฉด ์ฝค๋ง(,)๋ก ๊ตฌ๋ถํด์ ํ ๋ฒ์ ๋น๊ตํ ์ ์์
๋ฒ์ ๊ฐ์ ๋น๊ตํ๊ธฐ
var ageOfMichael = 19
when (ageOfMichael) {
in 10..19 -> {
Log.d("when", "๋ง์ดํด์ 10๋ ์
๋๋ค.")
}
โ
!in 10..19 -> {
Log.d("when", "๋ง์ดํด์ 10๋๊ฐ ์๋๋๋ค.")
}
โ
else -> {
Log.d("when", "๋ง์ดํด์ ๋์ด๋ฅผ ์ ์ ์์ต๋๋ค.")
}
}
โ
/** [๋ก๊ทธ์บฃ ์ถ๋ ฅ ๋ด์ฉ]
๋ง์ดํด์ 10๋ ์
๋๋ค.
*/
- in์ ์ฌ์ฉํด์ ๋ฒ์ ๊ฐ์ ๋น๊ตํ ์๋ ์์
- if ๋ฌธ์ ๋น๊ต ์ฐ์ฐ์ ์ค <=, >= ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์
ํ๋ผ๋ฏธํฐ ์๋ when ์ฌ์ฉํ๊ธฐ
var currentTime = 6
when {
currentTime == 5 -> {
Log.d("when", "ํ์ฌ ์๊ฐ์ 5์ ์
๋๋ค.")
}
โ
currentTime > 5 -> {
Log.d("when", "ํ์ฌ ์๊ฐ์ ์๊ฐ ๋์์ต๋๋ค.")
}
โ
else -> {
Log.d("when", "ํ์ฌ ์๊ฐ์ 5์ ์ด์ ์
๋๋ค.")
}
}
โ
/** [๋ก๊ทธ์บฃ ์ถ๋ ฅ ๋ด์ฉ]
ํ์ฌ ์๊ฐ์ 5์๊ฐ ๋์์ต๋๋ค.
*/
- when ๋ค์์ ์ค๋ ๊ดํธ๋ฅผ ์๋ตํ๊ณ ๋ง์น if ๋ฌธ์ฒ๋ผ ์ฌ์ฉํ ์๋ ์์
if ๋ฌธ๊ณผ when ๋ฌธ์ ์ธ์ ์ฌ์ฉํ ๊น?
์ฐ๋ ๋ฐ์ดํฐ
... 2019, 2020, 2021, 2022, 2023 ... : ๋ฒ์๋ฅผ ํ์ ํ ์ ์๊ณ ๊ฐ์๊ฐ ๋ง์
์์ผ ๋ฐ์ดํฐ
์, ํ, ์, ๋ชฉ, ๊ธ, ํ , ์ผ: ๊ฐ์ ํน์ ํ ์ ์๊ณ ๊ฐ์๊ฐ 7๊ฐ๋ก ํ์ ๋จ
- ์ฐ๋ ๋ฐ์ดํฐ์ฒ๋ผ ๋ฒ์๊ฐ ๋๊ณ ๊ฐ์ ํน์ ํ ์ ์์ ๊ฒฝ์ฐ์๋ if ๋ฌธ์ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ฐ๋์งํจ
- ์์ผ ๋ฐ์ดํฐ์ฒ๋ผ 7๊ฐ๋ก ๋ฒ์๊ฐ ์ ํ๋๊ณ ๊ฐ๋ ํน์ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ when ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํจ