-
자바와 코틀린의 차이를 알아보자코틀린 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