Today
-
Yesterday
-
Total
-
  • 💡 [Kotlin] 예제를 통해 보는 기본 문법 - 변수, 상수(val, const val), 함수
    | 프로그래밍 분야/Kotlin 2021. 6. 22. 13:44

    💡 예제 - Hello World 출력

    class Tmp {
        companion object {
            const val GREETING:String = "World"
        }
    }
    
    fun main(){
        val greeting:String
        greeting = "World"
        // greeting = "Meoru"  <Error!>
        // Tmp.GREETING = "Meoru"  <Error!>
        println("Hello " + greeting)
        println("Hello " + Tmp.GREETING)
    }

    [결과]

    Hello World

    Hello World

     

    예제를 통해 알 수 있는 점 (vs Java)

      Java Kotlin
    main 함수 선언부 class 내부 최상위 레벨
    (런타임) 상수 선언 final String greeting; val greeting: String
    (컴파일타임) 상수 선언 static final String GREETING = "World"; companion object {
        const val GREETING:String = "World"
    }
    표준출력함수 System.out.println() println()
    문자열 문자열 합연산 통해 표현 가능

     

    - 클래스 안에 메인함수를 선언해줘야했던 자바와 다르게, 코틀린은 바로 메인함수를 선언할 수 있습니다.

     

    - 다만 (컴파일 타임) 상수는 여전히 클래스 내부에서만 선언 가능하며, object 및 companion object(동반 객체)에 선언됩니다. 후자의 경우 Tmp.GREETING 과 같이 외부에서 클래스명으로 손쉽게 접근이 가능합니다.

     

    - val은 진정한 의미에서 상수라고 할 수 없습니다. '한 번 초기화가 가능한 변수' 라고 봄이 옳습니다.

     

    - 런타임 상수와 컴파일타임 상수의 차이점은 아래 예제를 통해 비교할 수 있습니다.

     

    (예제 출처 : https://inuplace.tistory.com/248)

    class FoodCourt {
        fun searchPrice(foodName: String) {
            val price = when(foodName) {
                FOOD_CREAM_PASTA -> 13000
                FOOD_STEAK -> 25000
                FOOD_PIZZA -> 15000
                else -> 0
            }
            println("${foodName}의 가격은 ${price}원 입니다")
        }
        companion object {
            const val FOOD_CREAM_PASTA = "크림파스타"
            const val FOOD_STEAK = "스테이크"
            const val FOOD_PIZZA = "피자"    
        }
    }
    
    fun main() {
      val foodCourt = FoodCourt()
      foodCourt.searchPrice(FoodCourt.FOOD_CREAM_PASTA)
      foodCourt.searchPrice(FoodCourt.FOOD_STEAK)
      foodCourt.searchPrice(FoodCourt.FOOD_PIZZA)
    }

    [결과]

    크림파스타의 가격은 13000원 입니다
    스테이크의 가격은 25000원 입니다
    피자의 가격은 15000원 입니다

     

    컴파일타임 상수인 const val는 객체의 생성자를 통해 할당될 수 없습니다. 기본 타입(String, Int, Boolean, ...)으로 선언과 동시에 초기화되면 이후 절대 변경될 수 없습니다.

     

    런타임 상수인 val은 객체의 생성자를 통해 할당될 수 있으며 값이 바뀔 수 있습니다. 또한 선언과 동시에 초기화되지 않아도 됩니다.

     


    💡 예제 - 변수 출력

    fun main(){
        if(num_print(2021)) {
            println("Success")
        }
    }
    
    fun num_print(year: Int): Boolean{
        var num = year
        println("Year : $num")
        num = 622
        print("Date : 0")
        println(num)
        // num = "Test"  <Error!>
        
        return (true)
    }

    [결과]

    Year : 2021
    Date : 0622
    Success

     

    예제를 통해 알 수 있는 점 (vs Java)

      Java Kotlin
    변수 타입 지정 int num = year; var num: Int = year
    (타입 명확할시 생략)
    리턴 타입 및 매개변수 지정 public boolean num_print(int year) { } fun num_print(year: Int): Boolean { }
    큰따옴표(문자열) 내부 식별자 삽입 x "... ${num} ... " (명확할시 중괄호 생략)

     

sangilyoon.dev@gmail.com