16

Javaには、プリミティブデータ型とそれらのラッパークラスがあります。私の質問は、いつ何を使うのかということです。コレクションを作成する必要がある場合は、ラッパークラスを使用する必要があることは知っていますが、それ以外に、ラッパークラスを使用する必要がある特定のケースはありますか?

また、どうしても必要な場合を除いて、常にプリミティブデータ型を使用する必要がありますか?

たとえば、整数とブール値のプロパティを持つクラスを作成している場合:

Class MyClass {
    ...
    private Integer x;
    private Boolean y;
    ...
}

また

Class MyClass {
    ...
    private int x;
    private boolean y;
    ...
}

それらのどれをより頻繁に使用する必要がありますか?そして、どのシナリオでもう一方を使用する必要がありますか?

4

5 に答える 5

24

他に選択肢がない場合を除いて、プリミティブ型を使用してください。null許容型ではないという事実は、多くのバグを防ぎます。そして、彼らはまたより速いです。

コレクションに加えて、ラッパータイプは通常、null許容値を表すために使用されます(たとえば、データベースのnull許容列から取得されます)。

于 2012-12-16T14:35:43.393 に答える
5

この記事はラッパークラスについて話します、彼らは言いました:

Java APIのラッパークラスは、次の2つの主な目的を果たします。

1-プリミティブをオブジェクトに「ラップ」するメカニズムを提供して、プリミティブがコレクションに追加されたり、オブジェクトの戻り値を持つメソッドから返されたりするなど、オブジェクト用に予約されたアクティビティに含めることができるようにします。

2-プリミティブのユーティリティ関数の品揃えを提供します。これらの関数のほとんどは、さまざまな変換に関連しています。プリミティブをStringオブジェクトとの間で変換したり、プリミティブとStringオブジェクトを2進数、8進数、16進数などのさまざまな基数(または基数)との間で変換したりします。

于 2012-12-16T14:47:21.950 に答える
4

ラッパークラスは不変であるため、セッターメソッドはありません。値を変更するたびに、新しいオブジェクトを作成する必要があります。これにより、不要なオブジェクトが作成されます。intプリミティブは、数値のビットを表すだけです。新しいオブジェクトを作成していません。したがって、コレクションを使用しない場合は、プリミティブを使用することをお勧めします。

于 2012-12-16T14:45:48.383 に答える
1

ラッパークラスは、システムが考慮しなければならないレベルの不確実性を生成する場合に非常に役立ちます。たとえば、wiresharkなどのパケットキャプチャプログラムでブール値を使用すると、送信者からパケットが変更されたかどうかを判断できなかった場合にnull値を渡すことができます。特に、他のパケット操作を判別できる場合。

于 2012-12-16T14:41:59.767 に答える
0

c#でプリミティブ型を使用する場合、静的メンバーにアクセスするときは、宣言でc#エイリアスを使用し、.NET名を使用することを好みます。それは個人的な好みです。両方の名前は完全に同等です。

int x = Int32.Parse("123");
于 2012-12-16T14:56:49.283 に答える