ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바와 코틀린의 차이를 알아보자
    코틀린 2021. 7. 25. 18:09
    반응형

    코틀린이 무엇인가?

    이제 작성한 내용은 위의 작성한글 중 코틀린의 특징과 비슷한점이 많다. 하지만 이번에는 직접 코드를 작성하면서 설명하기 때문에 더 이해하기 쉬울 것이다.

     

    자바와 코틀린의 차이

    더적은 타이핑

    세미콜론 생략가능

    fun test() {
        print("hello world")
        print(6 * 2)
    }

    변수타입을 지정 생략 가능

    fun testVariable(){
        val greet = "hello";
        println(greet);
        println(greet::class)
        println(greet.javaClass)
    }

     

    결과

    위의 클래스를보게된다면 코틀린의 Stringclass, JavaClass를 가져다가 사용할 수있다. 그 이유는 컴파일 시간에 타입을 체크하기 때문이다.

    클래스와 함수는 생략 가능

    코틀린은 클래스와 메소드를 만들라고 강요하지 않는다. 그 이유는 아래코드의 실행결과를 보게된다면 자동으로 클래스로 감싸주기 때문이다. 더나아가 풀어쓴다면 코틀린은 nofluff() 함수를 Standalone이라는 동기화된 클래스의 메소드 안으로 넣었으며, 클래스의 이름은 파일 이름으로 추론된다. 그리고 출력 결과에 나온 init을 봤을 대 단독적으로 동작하는 코드는 클래스의 생성자 안으로 들어갔다.

    try ~ catch는 선택사항

    java의 Thread 클래스의 sleep() 해당 예외를 반드시 처리하도록 강제하지만 코틀린은 강제하지 않는다.

    /**
     * 코틀린은 try ~ catch(예외처리)는 선택사항이다.
     */
    fun skipException() {
        println("시작")
        Thread.sleep(1000)
        println("끝")
    }

     

    현명한 경고

    아래의 코드를 실행시키게된다면 console에는 사용하지 않는 파라미터에 대한 경고를 함께 준다. 

    하지만 -Werror옵션으로 경고를 오류처럼 다를 수 있다. 아래의 커맨드라인으로 실행시키게 된다면 위에 실행했던거와 다르게 오류 리포트가 나오게 된다.

    kotlinc-jvm -Werror -script chapter2_step4.kts

     

    var 보다는 val

    코드를 작성하게 된다면 이뮤터블과 뮤터블이란 이야기가 나올 것이다. 

    이뮤터블은 상태를 바꿀 수 없는 상태, 자바로 치면 final이 붙은 것이며,

    뮤터블은 상태를 바꿀 수 있는 상태를 뜻한다.

    var factor = 2
    fun doubleIt(n: Int) = n * factor
    factor = 0
    println(doubleIt(2))

    위의 코드를 실행시키게 된다면 var(뮤터블)로 선언했기 때문에 값이 변한다. 이렇게 된 코드는 코드를 추론하기 어렵게 만들다. 게다가 이러한 코드는 오류가 발생할 가능성이 높으며, 뮤터블 변수가 있는 코드는 병렬화하기가 더 어렵다.

    이뮤터블의 예제

     

    향상된 동일성 체크

    아래의 비교가 Java의 equals()로 실행되었다면 런타임에서 NullPointException 이란 결과가 발생이 된다. 그렇지만 코틀린은 이러한 에러를 발생하지 않는다. 그 이유는 코틀린은 == 연산자를 사용할 때, null 체크를 먼저하고, equlas()메소드를 실행하기 때문이다.

     

    문자열 템플릿

    큰따음표 문자열에서 $ 심볼을 변수 앞에  붙여주면 어떤 변수라도 문자열 안에 들어간다.

     

    Raw 문자열

    이스케이프 사용 하지 않는다.
    멀티라인 문자열

     

    표현식은 많이, 명령문은 적게

     


    정리

    • 프로그래밍 작업에서 사용되는 관용적인 코드를 없애고, java보다 더 적은 코드로 작업 가능
    • 오류로부터 경고를 해준다.
    • 변수의 이뮤터빌리티와 뮤터빌리티를 미리 선택하기 때문에 프로그램의 안정성이 올라간다.
    • 비교를 할때 null 오류가 발생되지 않는다.
    반응형

    '코틀린' 카테고리의 다른 글

    코틀린이 무엇인가?  (0) 2021.07.24
Designed by Tistory.