Javaは、オブジェクトではないプリミティブを使用しているため、純粋なオブジェクト指向言語ではないことをどこかで読んだので、この質問が思い浮かびました。同意できます。今、私の問題同じタイプのオブジェクトがすでにあるのにprimitives/wrappers
を使用しているのはなぜですか?
例として、Integer
を考えると、オブジェクトの動作以外はint
と同じ値の制限があります。なぜまだJavaこれらの条件下でprimitives
を使用するのですか?
私の意見として、Javaオブジェクトタイプのみを使用する場合 自動ボックス化とボックス化解除 必要ありません。ちなみに、Stringのプリミティブもありません。
1つの理由は、メモリ使用量によるものです。 int
、float
などのプリミティブは、少なくとも8バイトのオブジェクトと比較して、必要なメモリ割り当てが少なくて済みます(4バイトだと思います)。以下を参照してください 参照 :
さらに、多くの算術(数値)は、同等のオブジェクトではなくプリミティブを使用して完了します。これが、Java言語で非常に重要であるもう1つの理由です。