web-dev-qa-db-ja.com

Javaのプリミティブvsオブジェクトタイプ

Javaは、オブジェクトではないプリミティブを使用しているため、純粋なオブジェクト指向言語ではないことをどこかで読んだので、この質問が思い浮かびました。同意できます。今、私の問題同じタイプのオブジェクトがすでにあるのにprimitives/wrappersを使用しているのはなぜですか?

例として、Integerを考えると、オブジェクトの動作以外はintと同じ値の制限があります。なぜまだJavaこれらの条件下でprimitivesを使用するのですか?

私の意見として、Javaオブジェクトタイプのみを使用する場合 自動ボックス化とボックス化解除 必要ありません。ちなみに、Stringのプリミティブもありません。

1つの理由は、メモリ使用量によるものです。 intfloatなどのプリミティブは、少なくとも8バイトのオブジェクトと比較して、必要なメモリ割り当てが少なくて済みます(4バイトだと思います)。以下を参照してください 参照

さらに、多くの算術(数値)は、同等のオブジェクトではなくプリミティブを使用して完了します。これが、Java言語で非常に重要であるもう1つの理由です。

9
blackpanther