Kotlin 코틀린
코틀린 변수와 자바 변수의 차이점
ktko
2019. 2. 9. 22:36
코틀린을 보면 변수를 선언할 때 Int, String, Double 과 같이 선언을 하며 자바는 원시형(Primitive) 그리고 래퍼(Wrapper) 두 가지로 선언을 할 수 있다. 코틀린은 자바와 같이 이런 구분이 없다. 코틀린은 작성된 코드가 JVM에서 실행될 때 모두 래퍼로 매칭되는 것일까?
확인을 해보자면 아래와 같다. 아래는 코틀린 코드이다.
1 2 3 4 | var no: Int = 10 var count: Int? = 20 var name: String = "kkang" var email: String = "ktko@tistory.com" |
위의 코틀린 코드를 자바로 변환하면 아래와 같다. 이것은 책의 예제이고 직접 코틀린을 자바코드로 변환을 했었을 때 이렇게 안나왔다. 방법은 나도 잘 모르겠다 ...
1 2 3 4 5 6 7 | private static int no = 10; @Nullable private static Integer count = Integer.valueOf(20); @NotNull privae static String name = "kkang"; @Nullable private static String email = "a@a.com"; |
위의 두 코드를 비고해 보자면 ?를 붙이냐에 따라 @NotNull인지 @Nullalbe인지 정해지며, int, Integer과 같이 Primitive인지 Wrapper인지 정해진다.
데이터 타입이 매핑 되는지는 꼭 알고 있을 필요는 없다고 책에서는 설명되었는데 중요한 것 같아서 정리를 해보았다.
IntelliJ에서 변환했더니 아래와 같이 나왔다. 책에서 내용이 다른데 왜 다른지는 잘 모르겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import kotlin.Metadata; import kotlin.jvm.internal.Intrinsics; import org.jetbrains.annotations.NotNull; @Metadata( mv = {1, 1, 13}, bv = {1, 0, 3}, k = 2, d1 = {"\u0000\u0014\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\u0019\u0010\u0000\u001a\u00020\u00012\f\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003¢\u0006\u0002\u0010\u0005¨\u0006\u0006"}, d2 = {"main", "", "args", "", "", "([Ljava/lang/String;)V", "KotlinTest"} ) public final class TestKt { public static final void main(@NotNull String[] args) { Intrinsics.checkParameterIsNotNull(args, "args"); int no = true; int count = true; String name = "kkang"; String email = "ktko@tistory.com"; } } | cs |