Hello World
fun main() {
println("Hello, World!")
}
- 함수의 선언은 fun으로 한다.
- 클래스를 반드시 선언할 필요가 없다.
- 출력을 할 때 자바는 표준라이브러리를사용하지만 (sout) 코틀린은 println() 으로 짧게 제공한다. (내부적으로 System.out.println() 을 호출하고 있다) -> 코틀린에서 System.out.println()을 써도 문제없이 동작한다.
- 세미콜론(;) 이 없다.
변수의 종류
- val: 읽기 전용
- var: 수정 가능
코틀린에서는 변경될 가능성이 없다면 읽기 전용 필드로 선언하는 것을 권장한다고 한다.
간단한 함수 예제
제곱 구하기
fun square(x: Int): Int {
return x * x
}
fun main() {
val result: Int = square(5)
println(result)
}
변수를 선언할 때도 변수명: 타입 으로 지정하며 굳이 Int를 안적어도 Int 타입으로 추론해준다.
// Int 타입으로 추론해줌
val result = Square(5)
디폴트 파라미터
파라미터에 디폴트 값을 지정할 수 있다.
fun greet(name: String, greeting: String = "안녕하세요") {
println("$greeting, $name!")
}
fun main() {
greet("홍길동") // 기본 인사말 사용
greet("이순신", "안녕") // 사용자 지정 인사말 사용
}
단일 표현식인 경우 한 줄로 정의
// 한 줄로 작성
fun plus(x: Int): Int = x + x
// 리턴 타입 생략 가능
fun plus(x: Int) = x + x
for문
1~10까지 반복하는 반복문을 자바와 코틀린 문법으로 작성해본다.
코틀린이 훨씬 간결한 모습이다.
// Java
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
// Kotlin
var sum = 0
for ( i in 1..10) {
sum += i
}
내림차순으로 하거나 건너뛸 때는 downTo와 step이라는 키워드를 사용한다.
for (i in 10 downTo 0 step 2) {
...
}
when 조건문
코드를 제어할 때 if-else문을 사용하는데, 코틀린의 경우 when 조건문을 통해 간결화 할 수 있다.
fun main() {
val x = 5
when (x) {
1 -> println("x는 1입니다.")
2 -> println("x는 2입니다.")
3 -> println("x는 3입니다.")
4 -> println("x는 4입니다.")
5 -> println("x는 5입니다.")
else -> println("x는 1~5가 아닙니다.")
}
}
// 여러 조건을 동시에 검사
fun main() {
val x = 2
when (x) {
1, 2 -> println("x는 1 또는 2입니다.")
3 -> println("x는 3입니다.")
else -> println("x는 1, 2, 3이 아닙니다.")
}
}
// 범위 검사
fun main() {
val x = 15
when (x) {
in 1..10 -> println("x는 1에서 10 사이입니다.")
in 11..20 -> println("x는 11에서 20 사이입니다.")
else -> println("x는 20보다 큽니다.")
}
}
// 타입 검사
fun main() {
val obj: Any = "Hello, Kotlin"
when (obj) {
is String -> println("obj는 String입니다.")
is Int -> println("obj는 Int입니다.")
else -> println("obj는 알 수 없는 타입입니다.")
}
}
// 임의 표현식 사용
fun main() {
val x = 10
when {
x < 0 -> println("x는 음수입니다.")
x == 0 -> println("x는 0입니다.")
x > 0 -> println("x는 양수입니다.")
}
}
함수형 프로그래밍 언어
자바도 자바8에서부터 함수형의 특징을 많이 도입했고, 코틀린도 함수형의 특징을 많이 갖고 있다
코틀린에서 stream을 돌릴 때 it을 통해 각 element를 표현할 수 있다.
// Java
List<Integer> doubleList = list.stream()
.map(m -> m * 2)
.collect(Collectors.toList());
// Kotlin
val doubleList = list.map { it * 2 }
// Java
members.stream()
.filter(m -> m.age == 24)
.map(m -> m.name)
.sorted()
.collect(Collectors.toList());
// Kotlin
members.filter { it.age == 24 }
.map { it.name }
.sorted()
'Kotlin' 카테고리의 다른 글
코틀린이 제공하는 자료형 (0) | 2024.10.05 |
---|---|
코틀린의 실행 과정 (0) | 2024.10.03 |
코틀린의 접근 제어 (0) | 2024.10.03 |
Kotlin 이란 (0) | 2024.10.03 |