본문 바로가기

Kotlin

[Kotlin Basic] 변수와 타입, 그리고 함수

 

 

Kotlin에서 변수를 선언하고 사용하는 방법에 대해 알아보겠습니다.

 

#1. Kotlin의 변수 선언

 

코틀린에서 변수를 선언할 때는 2가지 키워드 중 상황에 맞는 것을 선택해서 사용합니다.

코틀린 변수 설명 이미지

>키워드(Keyword)

  • val : 변경이 불가능한 값(immutable)한 변수로 지정하는 키워드.
    • Java에서 final 변수와 같은 의미를 가집니다. 변수가 최초 초기화 된 이후, 값의 수정이 불가능합니다.
  • var: 변경 가능한(mutable)한 변수로 지정하는 키워드입니다.
    • Java의 일반 변수에 해당합니다.

위 키워드 중 하나를 반드시 맨 앞에 명시해야 하며, 타입은 뒤에 명시하거나 생략할 수 있습니다.

(+α) 타입을 생략할 수 있는 이유는, 코틀린은 타입 추론(Type Inference)이 가능하기 때문입니다.

 

>변수 명

키워드 작성 후, 한칸의 공간을 띄우고 변수 명을 입력합니다. 해당 변수 명을 통해 변수에 접근합니다.

 

>변수 타입

변수 명 뒤에 colon(' : ')을 붙이며 띄운 후 해당 변수의 타입을 지정합니다. 코틀린은 앞서 언급한 타입 추론을 언어 차원에서 지원합니다. 따라서 초기화 값이 있고 충분히 추론할 수 있는 값에 대해서는 변수 타입이 자동으로 설정됩니다.

때문에, 변수 타입을 명시하는 것은 개발자의 선택 사항(Optional)입니다.

 

>초기화 값

변수는 선언과 동시에 초기화 할 수 있습니다. 해당 값을 통해 변수 타입 추론이 이루어집니다.


#2. Kotlin의 Type

 

코틀린의 타입에 대해서 알아보겠습니다.

기본적으로 코틀린의 모든 것은 객체(Object)입니다. Java와는 다르게 원시 타입(Primitive type)을 코딩할 때 사용하지 않는다는 것입니다. 하지만, 컴파일 후 실제로 런타임 중에는 원시 타입이 사용됩니다.

요컨데, 코틀린으로 프로그래밍 시에는 원시타입과 참조타입을 구분해서 사용할 필요는 없습니다.

 

>정수형

kotlin 정수형

val intEx: Int = 1000000000
val longEx: Long = 1000000000000000000
val shortEx: Short = 10000
val byteEx: Byte = 100

 

>실수형

kotlin 실수형

val doubleEx: Double = 3.141592
val floatEx: Float = 3.1415926535f

 

숫자를 표현하는 타입들은 기본적으로 JVM의 런타임상에서 원시 타입으로 변환되어 동작합니다.

 

하지만 예외적으로 참조 타입으로 변환되어 사용되는 경우가 있는데, 바로 nullable로 선언했을 경우입니다.

 

코틀린은 변수를 선언할 때, null을 허용한다면 ?를 이용하여 표현하도록 하고있습니다. 이에 관련된 자세한 설명은 이후 글에서 자세하게 다루도록 하겠습니다.

 

>Boolean형

boolean 타입은, true(참), false(거짓)을 나타내는 변수 타입입니다.

해당 타입은 논리연산자, 조건문과 함께 자주 사용됩니다.

val trueEx: boolean = true
val falseEx: boolean = false

 

>문자형(Character)

char형은 문자 1개를 나타내는 변수 타입입니다.

String 객체는 char형 배열로 구성되어 있습니다.

단일로 사용하는 방법은 다음과 같습니다.

val charEx: Char = 'a'

 

>문자열(String)

String 타입은 문자열을 나타내는 타입입니다. 

배열의 형태로 접근하여 가져올 수 있습니다.

val strExt: String = "abcdef"

#3. Kotlin의 Function

코틀린에서 함수를 선언하는 방식은 Java와 달리 아래와 같은 규칙들을 가집니다.

  • 함수를 선언할 때 'fun'이라는 키워드를 사용한다.
  • 함수에 Parameter가 없는 경우에는 빈 괄호를 입력한다.
  • 함수의 Parameter는 이름을 먼저 명시한 뒤, 콜론( : ) 뒤에 타입을 명시한다.
  • 함수의 Parameter가 2개 이상인 경우 콤마( , )로 구분한다.
  • return type은 함수 이름 뒤에 명시한다.

보다 정확한 예시를 위해 Hello world! 같은 간단한 예시가 아닌, 세가지 수의 더하기를 수행하는 함수를 구현하여 알아보겠습니다.

 

fun sumThreeNumber(num1: Int, num2: Int, num3: Int = 0): Int{
    val result = num1 + num2 + num3
    return result
}

 

여기서 세번째 인자인 num3: Int = 0을 보고 의문이 들 수 있습니다.

이는 Defaul argument라고도 부르며, 함수 호출 시, 전달인자(Argument)가 생략된 경우에 할당되는 해당 파라미터의 기본 값(Defaul value)를 지정해 주는 것입니다.

 

기본 값은 type 과 값 사이에 = 를 사용하여 정의합니다.

이후 overriding method에서 더욱 자세하게 다루도록 하겠습니다.

 

그런데 코틀린은, 식이 본문인 함수라는 것이 가능합니다.

이를 통해, 위에 작성된 코드를 이런 방식으로도 작성이 가능합니다.

fun sumThreeNumber(num1:Int, num2:Int, num3:Int = 0): Int = num1+num2+num3

//이것 마져도 return type을 type inference를 활용해 더 간결하게 바꿀 수 있다!
fun sumThreeNumber(num1:Int, num2:Int, num3:Int = 0) = num1+num2+num3

 

 

'Kotlin' 카테고리의 다른 글

[Kotlin Basic] 조건문(if)과 다중 선택문(when)  (0) 2022.12.31