2014-08-28 72 views

回答

1
String s1 = new String(); 

是完全沒有意義的,因爲所有你正在做的是創造String一個額外的實例將在稍後丟棄。

String s1 = null; 

很好,但如果在使用正確的值初始化之前未使用該變量,則不是必需的。
簡單

String s1; 

通常會做得很好。

+0

'字符串S1時,'='字符串S1 = NULL ;'在方法範圍內。 – 2014-08-28 12:09:24

+0

@Peter:不,它肯定不是。我添加了一些更多的信息(希望)澄清。 – Keppil 2014-08-28 12:12:32

0

第二個選項

String s1=new Sting(); 

將創建一個新的空字符串。它可能需要更多的內存和CPU時間,但除非您做相同的操作數萬億次,否則您不會注意到其中的差異。

在另一方面,在第二個選項字符串存在,你可以用它做的東西,例如拼接另一個字符串給它:

s1 = s1 + " bla bla"; 

如果使用第一個選項:

String s1=null; 
s1 = s1 + " bla bla"; 

你會得到一個NullPointerException。

除此之外,我可以看到沒有區別。

0

我的理解是,當你使用新的String()創建一個字符串對象時,它會創建一個空字符串。

請參閱Java文檔http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

公共字符串()分配一個新的String對象,它 表示空字符序列。請注意,由於字符串是不可變的,所以不需要使用此構造函數。

當您使用String s1 = null;但它會創建一個指向無效的String變量。因此,您不能像s1.length那樣調用它(這會導致NullPointerException),直到您實際將值賦給s1。

0

如果你要修改字符串在一個循環或在有條件的情況下,需要在括號外的結果,您可能需要使用字符串S1 = NULL;

例如:

boolean test = true; 
String s1 = null; 
if (test) { 
    s1 = "true"; 
} else { 
    s1 = "false"; 
} 
System.out.println("Results is: " + s1); 

如果沒有定義S1的條件之前是零,你將有一個錯誤的打印