1) camelCase: 주로 변수, 메소드의 이름을 지정할 때 사용
2) snake_case: 주로 상수의 이름 지정할 때 사용
3) PascalCase: 주로 클래스의 이름을 지정할 때 사용
backgroundColor // camelCase
background_color // snake_case
BackgroundColor // PascalCase
| 크기 | 특징 | |
|---|---|---|
| Long | 64비트 | 정수 |
| Int | 32비트 | 정수 |
| Short | 16비트 | 정수 |
| Byte | 8비트 | 정수 |
| Double | 64비트 | 실수(소수) |
| Float | 32비트 | 실수(소수) |
| Char | 16비트 | 하나의 문자 |
| Boolean | 8비트 | 논리(참 또는 거짓) |
| String | X | 문자열 |

변수 선언시 해당 변수가 변경 가능한지 여부를 결정하는 것으로 해당값은 필수값
1) var
2) val
1) 변수 선언과 동시에 값 넣기
var name = 'ars' // 변수명 name에 문자열 "ars" 입력
2) 값으로 초기화하지 않고 선언만 하고 사용
var age: Int // 변수명 age를 Int 타입으로 선언
age = 27 // 숫자 '27'을 입력
var age: Int
age = 27
age = '스물다섯' // (x) 선언했던 값의 타입과 다르기 때문에 입력X
age = 25 // (o) 선언했던 타입과 같은 숫자(Int)는 입력O
| 설명 | |
|---|---|
| +, -, *, /, % | 산술 연산자 |
| = | 대입 연산자, 매개변수의 기본값 지정 |
| +=, -=, *=, /=, %= | 복합 대입 연산자 |
| ++, -- | 증감 연산자 |
| <, >, <=, >= | 비교 연산자 |
| ==, != | 동등 연산자 |
| ===, !== | 동일 연산자 |
| &&, ||, ! | 논리 연산자 |
| in, !in, a..b, a[i], a[i]=b | 코틀린에 있는 특이한 연산자 |
동등성 (equality): 두 객체의 값이 같은지 여부 = 값 비교동일성 (Identity): 두 객체가 같은 객체인지 여부 = 객체 비교
if, else도 표현식이며, if else는 항상 반환값이 있음{} 블럭으로 있을 경우에는 마지막줄의 값을 반환if, else를 표현식으로 사용할 경우, if가 있으면 항상 else도 있어야 함val x = 2
val y = 7
var max: Int
if (x > y) {
max = x
} else {
max = y
}
// 표현식으로서의 사용
val max = if (x > y) x else y

switch-case와 대응되지만 Kotlin에서는 표현식으로 사용될 수 있어 값을 할당할 수 있음is는 Java의 instanceOf와 비슷함{} 블럭으로 묶는데, 그걸 표현식으로 사용할 때에는 제일 마지막 라인의 값을 반환when을 표현식으로 사용할 경우에는 항상 else를 사용 (enum 제외, 표현식이란 무언가 값에 할당한다는 것을 의미)when으로 type을 분기하면 별도로 casting을 하지 않아도 됨val x = 1
when {
x == 1 -> print('x == 1')
x == 2 -> print('x == 2')
else -> {
print('x is neither 1 nor 2')
}
}
// 위에 조건을 줄여서 표기 가능
// 1.
when(x) {
1 -> print('x == 1')
2 -> print('x == 2')
else -> {
print('x is neither 1 nor 2')
}
}
// 2.
when(x) {
0, 1 -> print('x == 0 or x == 1')
else -> print('otherwise')
}
// 3.
val s = '1'
val x = 1
when(x) {
parseInt(s) -> print('s encodes x')
else -> print('s does not encode x')
}
fun parseInt(value: String): Int = 1
// 4.
val x = 129
val validNumbers = 100..120
//when의 조건에 표현식이 들어갈 수 있음
when(x) {
in 1..10 -> println('x is in the range')
in validNumbers -> println('x is valid')
!in 10..20 -> println('x is outSide the range')
else -> println('none of the above')
}
if 범위가 넓고 값을 특정 할 수 없을 경우 사용when 범위가 제한되고 값을 특정할 수 있는 경우 사용when (week) {
mon -> red
tue -> orange
wed -> yellow
thu -> green
fri -> blue
sat -> navy
else -> purple
}
위 코드를 if문으로 작성한다면 아래와 같음
if (week == mon) {
red
} else if (week == tue) {
orange
} else if (week == tue) {
yellow
} else if (week == tue) {
green
} else if (week == tue) {
blue
} else if (week == tue) {
navy
} else {
purple
}
📌 이처럼 사용하려는 값을 특정할 수 있고 값의 범위가 넓지 않다면?
when문을 사용하는 것이 더 좋음if문은 가독성과 효율성이 떨어짐 try-catch와 비슷하지만 표현식으로 사용할 수 있어서 변수 등에 값을 할당할 수 있음try 값이 exception이 발생하면 catch 값이 할당됨try, catch는 {}의 마지막 줄의 값을 반환// 표현식으로서의 사용
val value = "test"
val parsedInt: Int? = try {
value.toInt()
} catch (e: NumberFormatException) {
-1
}
println(parsedInt) // -1
for문과 for-each문을 지원하는 반면 Kotlin은 for-each 형태만 지원하며, 반자를 통해 접근하는 인자의 타입을 생략할 수 있음val names: List<String> = ...
// 변수 name의 타입은 List names를 통해 String으로 추론하므로
// 타입을 굳이 명시하지 않아도 됨
val names: List<String> = ...
for (i in names.indicies) {
// 인덱스 인자로 배열 내 항목 접근
Log.e("Name", "name=${names[i]}")
}
while문과 do while문의 기능 및 문법은 Kotlin 문법의 일반적인 특징을 제외하면 Java와 완전히 동일함var x: Int = 0
var y: Int = 7
while (x < y) {
Log.d("Number", "x=$x y=$y");
x += 2
y ++
}
// do while
var x: Int = 0
var y: Int = 7
do {
Log.d("Number", "x=$x y=$y")
x += 2
y ++
} while (x < y)
a부터 b까지val myRange : IntRange = 0..10
for (i in myRange) {
// Do smething
}
// for문 안에서 바로 범위 지정
for (i in 0..10) {
// Do somthing
}
val items: List<String> = ...
val myRange: IntRange = 0..4 // 0, 1, 2, 3, 4
val myRange: IntRange = 0 util 4 // 0, 1, 2, 3
for (i in 7 downTo 3) print(i) // prints "76543"
for (i in 3..8 step 2) print(i) // prints "357"
for (i in 8 downTo 1 step 2) print(i) // prints "8642"
[참고 사이트]
'Create and use variables in Kotlin', Android Studio
'Kotlin 4.연산자', IfUwanna IT
'Expression', Kotlin
정말 유익한 글이었습니다.