2

デフォルト値で変数を初期化する場合:

違いは何ですか:

private static String thing = null;

private static String thing = "";

どちらが優れているのか、その理由や、他のデータ型を処理する最良の方法は何かを理解していません。

private static int number = 0;
private static double number  = 0;
private static char thing = 0;

申し訳ありませんが、新しい言語の学習に苦労しています。

4

4 に答える 4

3

String空文字列への初期化を除く

private static String thing = "";

他の割り当ては不要です。Java は、プリミティブ型のすべてのメンバー変数をデフォルト値に設定し、すべての参照型 ( を含むjava.String) を に設定しnullます。

Stringaを aまたは空の文字列に初期化する決定はあなた次第です: "何もない" と "空の文字列" *nullには違いがあるため、どちらを使用するかを決める必要があります。


*「何もない」と「空の文字列」の違いは、null文字列に対して操作が不可能であるという観察に由来します。対照的に、空の文字列の長さは明確に定義されており (ゼロ)、その文字を反復できます (空の反復です)。

于 2013-10-31T01:49:13.853 に答える
2

Java では、null と空は同じものではありません。

suns Javaチュートリアルから

フィールドの宣言時に値を割り当てる必要は必ずしもありません。宣言されているが初期化されていないフィールドは、コンパイラによって適切なデフォルトに設定されます。一般的に言えば、このデフォルトは、データ型に応じてゼロまたはヌルになります。ただし、このようなデフォルト値に依存することは、一般にプログラミング スタイルが悪いと見なされます。

次の表は、上記のデータ型のデフォルト値をまとめたものです。

Data Type Default Value (for fields)
byte      0
short     0
int       0
long      0L
float     0.0f
double    0.0d
char      '\u0000'
String (or any object) null
boolean   false

ローカル変数は少し異なります。コンパイラは、初期化されていないローカル変数にデフォルト値を割り当てません。宣言されているローカル変数を初期化できない場合は、使用する前に必ず値を割り当ててください。初期化されていないローカル変数にアクセスすると、コンパイル エラーが発生します。

于 2013-10-31T01:50:21.313 に答える
2

あなたが作るとき:

private static String ptNo = "";

変数ptNoを作成し、オブジェクトを参照するようにしていますString ""

あなたが作るとき:

private static String ptNo = null;

変数を作成していますが、何も参照していません。 nullvoid 参照、つまり何もないポインタを表すために Java で使用される予約済みの定数です。

于 2013-10-31T01:50:28.177 に答える
2

"" は空の値を持つ実際の文字列です。

null は、String 変数が何も指していないことを意味します。

例として、

String a="";
String b=null;

a.equals(b) は false を返します。これは、"" と null がメモリ内の同じスペースを占有していないためです。

于 2013-10-31T01:50:34.303 に答える