Kotlin

코틀린의 기본 문법 정리

재심 2024. 10. 3. 20:37

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