2016-10-08 5 views
0

文字列のnull演算子の処理は何ですか?連結の場合 出力はnull + stringなぜですか? はprgです。文字列がnullと連結されるとどうなりますか?

public static void main2() 
{ 
    String s1=null; 
    String s2=""; 
    System.out.println(s1); 
    System.out.println(s2); 
    s1=s1+"jay"; 
    s2=s2+"jay"; 
    System.out.println(s1); 
    System.out.println(s2); 
} 

ここには何が起こっているのですか?

+2

'null'は演算子ではありません。それは価値です。 –

+1

私はそれをこれ以上説明できませんでした:http://stackoverflow.com/a/802371/2392193 – Law

+0

@Lawその質問はJavaではなくJavascriptです。物事を混乱させてはいけません。 –

答えて

1

nullは演算子ではありません。 nullは、いずれのオブジェクトも参照していないnullの参照を表すリテラルです。 nullは参照型変数のデフォルト値です。これは、文字列変数または別のオブジェクト型変数がメモリ内のどこにも指していないことを意味します。

そして、別の文字列と連結するとき。その文字列に追加されます。どうして?参照がnullの場合、文字列は"null"に変換されるためです。

String s1=null; 
String s2=""; 
System.out.println(s1); 
System.out.println(s2); 
s1=s1+"jay"; 
s2=s2+"jay"; 

// compiler convert these lines like this, 
// s1 = (new StringBuilder()).append((String)null).append("jay").toString(); 
// s2 = (new StringBuilder()).append((String)"").append("jay").toString(); 

System.out.println(s1); 
System.out.println(s2); 

それは他の人と同じようnulljay

+0

OPは既に 'ヌル'が何であるかを知っていて、文字列と連結するとどうなるでしょう。彼はなぜ尋ねている。これは質問に答えません。 2行目の – Tibrogargan

+0

が答えました。あなたは答えを読んだのですか? – Pirate

+0

これはまだ質問に対する答えではありません。 – Tibrogargan

0

を印刷しますnullが値である、言及しています。 1は、整数型の値であるか、または"XYZ"という文字列型の例です。

ストリングと別のタイプの連結を実行すると、もう一方の値は単純にストリング表現に変換され、最初のストリングに追加されます。例えば

"XYZ" + 1 

同様

"XYZ1" 

"Jay" + null 

"Jaynull" 
になるになり

結論はnullは単なる値であることです。オペレーターではありません。これは、オブジェクトが存在しないことを示す暗黙の値です。

希望すると便利です。

関連する問題