web-dev-qa-db-ja.com

ヌル文字列と空文字列の違い

Null文字列(String s = null)と空の文字列(String s = "")の違いは何ですか?

これは私が持っているものです:

String s1 = ""; //print statement does not print any thing for s1 but s1.length()=0
String s2 = null;//print statement prints "null" for s2  but s2.length() gives exception

どういう意味ですか?

43
Shakeeb Ayaz

String s1 = "";は、空のStrings1に割り当てられることを意味します。この場合、s1.length()"".length()と同じで、期待どおり0を生成します。

String s2 = null;は、s2に(null)または「値なし」が割り当てられていることを意味します。したがって、これはs2.length()null.length()と同じで、JavaのNullPointerException変数(ポインター、並べ替え)のメソッドを呼び出すことができないため、nullを生成します。 。

また、ポイント、ステートメント

String s1;

実際には次と同じ効果があります。

String s1 = null;

一方、

String s1 = "";

言ったように、別のものです。

61
acdcjunior

Nullは何も意味しません。その単なる文字通りです。 Nullは参照変数の値です。ただし、空の文字列は空白です。length=0が返されます。空の文字列は空の値です。つまり、文字列には何もありません。

10
JDGuide

NULL値が割り当てられているオブジェクトに対してメソッドを呼び出すことはできません。 nullPointerExceptionを提供します。したがって、s2.length()は例外を与えています。

6
Divya Rodrigues

Javaなどの言語でオブジェクト変数を最初に使用する場合、値はまったくありません-ゼロではなく、文字通り値はありません-null

例えば:String s;

sを使用する場合、絶対に何も保持しないため、実際にはnullの値になります。

ただし、空の文字列は値です-文字のない文字列です。

String s; //Inits to null
String a =""; //A blank string

Nullは基本的に「何もありません」-Javaが初期化されていないオブジェクト変数に割り当てるデフォルトの「値」です(用語を大まかに使用するため)。

Nullは実際には値ではないため、プロパティはありません。したがって、値を返すことを意図したもの(.length()など)を呼び出すと、「何も」がプロパティを持つことができないため、常にエラーが返されます。

s1 = "";を作成することにより、より深く掘り下げるために、プロパティを持つことができ、メモリ内の関連スペースを占有するオブジェクトを初期化しています。 s2;を使用することにより、変数名を文字列に指定しますが、実際にはその時点で値を割り当てていません。

4
Singular1ty