책정리/Kotlin in Action

[Kotlin] 함수와 변수 - Java와 비교하기

뽀글보리 2021. 9. 2. 10:31
반응형

변수

코틀린에서는 크게 변경 가능한 변수와 변경 불가능한 변수가 있다.

변경 불가능한 변수 (val)

  • 변경 불가능한 (immutalbe) 참조를 지정하는 변수다. 자바에서는 final에 해당한다.

변경 가능한 변수 (var)

  • 변경 가능한 (mutalbe) 참조를 지정하는 변수다. 자바의 일반 변수에 해당한다.
val age: Int = 24 // (1)

val languages = arrayListOf("Korean", "English") // (2)
languages.add("French")

var name = "Boggling"
name = 42 // (3) Error : type mismatch, 컴파일 오류 발생

1

  • 'val' 변경 불가능한 변수 명시
  • Int 형 변수임을 명시

2

  • 'val' 변경 불가능한 변수 명시
  • type에 대해 명시하지 않았지만 자동으로 ArrayList형임을 알 수 있다.
  • 참조는 변경 불가능하지만 참조가 가리키는 객체 내부는 변경할 수 있다. 따라서 add 가능

3

  • 'var' 변경 가능한 변수 명시
  • type에 대해 명시하지 않았지만 자동으로 String형임을 알 수 있다.
  • String 형 변수에 Int값을 할당하려고 하니 컴파일 오류가 발생한다.

문자열 템플릿

코틀린에서는 문제열 템플릿이라는 기능이 있다. 해당 기능을 사용하면 자바의 문자열 접합 연산(+)이 아니라 문자열 리터럴(") 안에 변수를 $와 함께 넣을 수 있다.

    println("Hello, ${name}!")
    println("Hello, ${if (args.size > 0) args[0] else "stranger"}!")

다음과 같이 변수 또는 복잡한 식도 문자열 템플릿 안에 사용할 수 있다.

함수

코틀린의 함수에는 다음과 같은 다른 특성이 있다.

    fun main(args: Array<String>){
        println("Hello, World!")
    }
  • 함수 선언시 fun 키워드를 사용한다.
  • 파라미터 이름 뒤에 타입을 쓴다.
  • 함수를 최상위 수준에 정의할 수 있다.(클래스 안에 함수를 넣을 필요 없음, 함수 안에 클래스 넣기 가능)
  • 줄 끝에 세미콜론을 붙이지 않아도 된다.

fun max(a: Int, b: Int): Int = if(a > b) a else b

  • 함수를 간결하게 식으로 표현할 수 있다.
  • 함수를 변수 취급할 수 있다.

자바와 비교하기

  Java Kotlin
변수 - 변수 선언시 타입을 명시해야 한다
- final 키워드 사용
- 변수 선언시 타입을 명시하지 않아도 된다
- val 키워드 사용
문자열 - 접합 연산시 +를 사용한다. ("Hello" + name) - 문자열 템플릿을 사용한다. ("Hello ${name}")
- 복잡한 식도 문자열 템플릿 내에서 사용 가능하다.
함수 - 함수 선언시 리턴타입 + 함수 이름 + 파라미터 순으로 작성한다.
- 파라미터 이름 앞에 파라미터의 타입을 쓴다. (String name)
- 함수를 선언할 때 fun 키워드를 사용한다.
- 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. (name : String)
- 식으로 함수를 작성할 수 있다. (fun max(a: Int, b: Int): Int = if(a > b) a else b)
반응형