코틀린에서는 원시 타입(Primitive type)이 없다. 모든게 객체다. 자바에서는 아직 성능 문제로 원시 타입을 사용하고 있다.
스택오버플로에서 다음과 같은 질문을 찾을 수 있다. "Why do people still use primitive types in Java?"
Joshua Block의 Effective Java에서, "Avoid creating unnecessary objects" 규칙을 언급하고 있는데 왜냐하면, 다음 코드를 보자.
public static void main(String[] args) {
Long sum = 0L; // uses Long, not long
for(long i = 0; i <= Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
}
public static void main(String[] args) {
long sum = 0L; // uses long
for(long i = 0; i <= Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
}
눈치 채셨다면, 두개의 코드에서 다른 점이라곤 객체타입인 Long과 원시타입인 long의 선언부다. 첫번째는 실행에 43 초가 걸린다고 말하고 있고 두번째는 8초정도 이다.
코틀린에서는 객체로 알려진 Int, Float, Boolean,... 과 같은 타입이 있으며 이것은 박싱 타입으로 우리가 성능에 대해 걱정할 필요는 없을 것 같다.
나쁜 성능을 걱정한다면, 코틀린 컴파일러가 필요에 따라 자바 원시타입으로 변환되어 성능 이슈를 줄일것이다. 물론 전적으로 컴파일러 성능에 달렸다.
"어떤 것을 완전히 알려거든 그것을 다른 이에게 가르쳐라."
- Tryon Edwards -