제어문
if else
- if 제어문을 return 가능
- Kotlin에서는 삼항 연산자를 사용하지 않음
val grade = if(score >= 50) "P" else "F"
if(score >= 0 && score <= 100) ...
if(score in 0..100) ...
switch case
when
키워드 사용
when
키워드의 조건문 자체를 블럭 내부에서 구현 가능
- 조건문에는 expression 종류 사용 가능
- 한 줄에 조건 여러 개 입력 가능
return when(score) {
in 90..99 -> "A"
...
8 -> "B"
else -> "D"
}
return when {
number in 90..99 -> "P"
else "F"
}
반복문
- 전체적으로 Java와 Kotlin의 문법은 유사함
- 변화값을 표현하는 특정 키워드 사용
- 역순인 경우 2 downTo 0
- 반복 단위를 설정(i+=2 등)은 step 2 로 표현
List numList = List.of(1,2,3);
for(int num : numList) {
...
}
val numList = listOf(1,2,3)
for(num in numList) {
...
}
for(int i = 0; i < 3; i++) {
...
}
for(i in 0..2) {
...
}
예외 처리
- try-catch-finally 동일하게 사용 가능
- if-else와 같이 try 구문을 return 가능
- Kotlin에서는 Checked/Unchecked Exception 구분없이 모두 Unchecked로 간주함
- throws 혹은 try-catch 필수 아님
try(BufferedReader br = new BufferedReader(...)) {
br.readLine();
}
BufferedReader(???).use {
reader -> reader.readLine()
}
함수 작성
public
생략 가능
fun
이라는 키워드로 함수라고 명시
return
을 =
로 생략 가능
fun max(a: Int, b: Int): int = if(a > b) a else b
- 함수 파라미터 기본값을 사용하여
Overloading
구현
- 클래스 인스턴스 생성 시
builder 패턴
을 사용하지 않고 named argument
로 구현 가능
- 자바 코드를 참조할 때는
named argument
사용 불가
fun someFun(str: String, num: Int = 3, useNeWLine: Boolean = true) {
...
}
someFun("문자열")
someFun("문자열", 1)
someFun("문자열", 2, false)
someFun("문자열", useNewLine = false)
---
printAll(["1", "2", "3"])
public void printAll(String... params) {
...
}
printAll(["1", "2", "3"])
val strList = arrayOf("1", "2", "3")
printAll(*strList)
fun printAll(vararg params: String) {
...
}