2016-10-08 89 views
0

字符串中的空操作符的工作是什麼, 上的連接輸出是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這個問題是Javascript,而不是Java。我們不要混淆事物。 –

回答

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已經知道'null'是什麼,並且將它與一個字符串連接時會發生什麼。他在問爲什麼。這並沒有回答這個問題。我已經回答了第二行中的 – Tibrogargan

+0

。你讀過答案嗎? – Pirate

+0

這仍然不是問題的答案。 – Tibrogargan

0

像其他人所說的,null是一種價值。類似於說1是一個整數類型的值或"XYZ"是一個String類型的示例。

當您執行一個字符串和另一個類型的連接時,另一個值被簡單地轉換爲其「String」表示並附加到第一個字符串。

例如:

"XYZ" + 1 

變爲

"XYZ1" 

同樣,

"Jay" + null 

變爲

"Jaynull" 

底線是null只是一個值。而不是運營商。這是一個隱含的價值來表明沒有一個對象。

希望這會有所幫助!

相關問題