Java를 사용하면 기본 클래스가 있으므로 해당 클래스 기반 카운터 파트보다 efficient, readable, and less error prone code이 더 많습니다.숫자 연산은 Kotlin을 Java 프리미티브와 동등하게 빠르게 사용합니까?
Kotlin은 Java 프리미티브와 동일한 수준 (또는 그 이상)에서 숫자 연산이 수행되도록 컴파일 시간 최적화를 수행합니까?
Java를 사용하면 기본 클래스가 있으므로 해당 클래스 기반 카운터 파트보다 efficient, readable, and less error prone code이 더 많습니다.숫자 연산은 Kotlin을 Java 프리미티브와 동등하게 빠르게 사용합니까?
Kotlin은 Java 프리미티브와 동일한 수준 (또는 그 이상)에서 숫자 연산이 수행되도록 컴파일 시간 최적화를 수행합니까?
예, Kotlin도 기본 요소를 사용합니다. 대한
이유를 "덜 오류가 발생하기 쉬운"정말 코 틀린에 적용되지 않습니다 :하지만주의하면 (단지 프리미티브 같은)이 요청하지 않는 한 박스 유형이 널 (NULL)이 아니며 당신은 할 수 없습니다 혼동 ==
및 equals
.
"더 읽기 쉽습니다."두 연산자 모두 사용할 수 있습니다.
"더 효율적인"부분이 많이 적용되지만 링크 된 질문의 맨 위 대답에 언급 된 한 자의 인쇄상의 오류를 만들 수 없습니다. 박스형을 얻으려면 java.lang.Long
을 작성해야합니다! 한편
IntArray
이에도 불구하고
Array<Int>
(자바
int[]
및
java.lang.Integer[]
에 대응)보다 더 효율적있는 두
Int
를 사용하여 나타나는 알고 있어야합니다.
인용 docs :
이유형 중 일부는 특별한 내부 표현 할 수 있습니다 - 예를 들어, 숫자, 문자 및 논리 값이 런타임시 기본 값으로 표현 될 수있다 - 그러나 사용자에게 그들이 평범한 모습을 수업. 이 섹션에서는 숫자, 문자, 부울, 배열 및 문자열과 같은 Kotlin에서 사용되는 기본 유형을 설명합니다.
그래서 예, 컴파일러는 JVM primitive types이 런타임에 사용되는 방식으로 최적화합니다. 물론 예외가 있습니다 :
null이 가능한 숫자 참조 (예 : Int?)가 필요하거나 제네릭이 필요하지 않으면 Java 플랫폼에서 숫자가 실제로 JVM 기본 유형으로 저장됩니다. 후자의 경우 숫자는 박스로 표시됩니다.
소스 문서에도 힌트가 있습니다. Int
:
부호있는 32 비트 정수를 나타냅니다. JVM에서는,이 형태의 nullable가 아닌 값은, 원시 형 int의 값으로서 표현됩니다.