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
どういう意味ですか?
String s1 = "";
は、空のString
がs1
に割り当てられることを意味します。この場合、s1.length()
は"".length()
と同じで、期待どおり0
を生成します。
String s2 = null;
は、s2
に(null
)または「値なし」が割り当てられていることを意味します。したがって、これはs2.length()
はnull.length()
と同じで、JavaのNullPointerException
変数(ポインター、並べ替え)のメソッドを呼び出すことができないため、null
を生成します。 。
また、ポイント、ステートメント
String s1;
実際には次と同じ効果があります。
String s1 = null;
一方、
String s1 = "";
言ったように、別のものです。
Null
は何も意味しません。その単なる文字通りです。 Null
は参照変数の値です。ただし、空の文字列は空白です。length=0
が返されます。空の文字列は空の値です。つまり、文字列には何もありません。
NULL
値が割り当てられているオブジェクトに対してメソッドを呼び出すことはできません。 nullPointerException
を提供します。したがって、s2.length()
は例外を与えています。
Javaなどの言語でオブジェクト変数を最初に使用する場合、値はまったくありません-ゼロではなく、文字通り値はありません-null
例えば:String s;
s
を使用する場合、絶対に何も保持しないため、実際にはnull
の値になります。
ただし、空の文字列は値です-文字のない文字列です。
String s; //Inits to null
String a =""; //A blank string
Null
は基本的に「何もありません」-Javaが初期化されていないオブジェクト変数に割り当てるデフォルトの「値」です(用語を大まかに使用するため)。
Null
は実際には値ではないため、プロパティはありません。したがって、値を返すことを意図したもの(.length()
など)を呼び出すと、「何も」がプロパティを持つことができないため、常にエラーが返されます。
s1 = "";
を作成することにより、より深く掘り下げるために、プロパティを持つことができ、メモリ内の関連スペースを占有するオブジェクトを初期化しています。 s2;
を使用することにより、変数名を文字列に指定しますが、実際にはその時点で値を割り当てていません。