2017-10-23 70 views
3

Javaはプリミティブを持っています。それらを使用すると、クラスベースの対応オブジェクトよりも多くの数がefficient, readable, and less error prone codeになります。Javaプリミティブと同等の速さでKotlinを使用した数値演算はありますか?

Kotlinは、Javaプリミティブと同じレベル(またはそれ以上)で数値演算が実行されるように、コンパイル時の最適化を実行しますか?

答えて

3

はい、Kotlinもプリミティブを使用します。しかし、次の点に注意してくださいあなたが(ちょうどプリミティブのように)それを求める場合を除き箱入りタイプがNULL可能でないと、あなたがすることはできません:「エラーが発生しにくい」ため

  1. 理由は本当にKotlinには適用されません。混乱==equals

  2. "より読みやすく"もしない:演算子を両方とも使用できません。

  3. 「より効率的な」部分は非常に適用されますが、リンクされた質問の一番上の答えに記載されている一文字の誤植をすることはできません:ボックスタイプを取得するにはjava.lang.Longと書かなければなりません!一方

、あなたは両方のIntを使用するように表示されるにもかかわらず、IntArrayArray<Int>(Javaのint[]java.lang.Integer[]に対応)よりも効率的であることを認識する必要があります。

2

docsを引用:

タイプの一部は、特別な内部表現持つことができます - 例えば、数字、文字や真偽値は、実行時にプリミティブ値として表すことができる - しかし、ユーザーに、彼らは普通のように見えますクラス。このセクションでは、Kotlinで使用される基本的な型について説明します。数字、文字、ブール値、配列、文​​字列です。

コンパイラは、実行時にJVM primitive typesが使用されるように最適化します。

null可能な番号参照(例:Int?)が必要な場合やジェネリックが必要な場合を除いて、数字は物理的にJVMプリミティブタイプとして格納されます。後者の場合、数字は囲まれています。

ソースドキュメントにもヒントがあります。 Int

32ビット符号付き整数を表します。 JVMでは、このタイプのnullableではない値は、プリミティブ型intの値として表されます。

関連する問題