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
정말 유익한 글이었습니다.