在我的計劃,我使用字符串像如下:在java中使用這些字符串有什麼區別嗎?
String s1=null;
和String s1=new Sting();
對於第一字符串在一些地方我會改變s1="Demo Test"
後。任何人都可以指導我哪種方式最好使用字符串?
在我的計劃,我使用字符串像如下:在java中使用這些字符串有什麼區別嗎?
String s1=null;
和String s1=new Sting();
對於第一字符串在一些地方我會改變s1="Demo Test"
後。任何人都可以指導我哪種方式最好使用字符串?
String s1 = new String();
是完全沒有意義的,因爲所有你正在做的是創造String
一個額外的實例將在稍後丟棄。
String s1 = null;
很好,但如果在使用正確的值初始化之前未使用該變量,則不是必需的。
簡單
String s1;
通常會做得很好。
第二個選項
String s1=new Sting();
將創建一個新的空字符串。它可能需要更多的內存和CPU時間,但除非您做相同的操作數萬億次,否則您不會注意到其中的差異。
在另一方面,在第二個選項字符串存在,你可以用它做的東西,例如拼接另一個字符串給它:
s1 = s1 + " bla bla";
如果使用第一個選項:
String s1=null;
s1 = s1 + " bla bla";
你會得到一個NullPointerException。
除此之外,我可以看到沒有區別。
我的理解是,當你使用新的String()創建一個字符串對象時,它會創建一個空字符串。
請參閱Java文檔http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
公共字符串()分配一個新的String對象,它 表示空字符序列。請注意,由於字符串是不可變的,所以不需要使用此構造函數。
當您使用String s1 = null;但它會創建一個指向無效的String變量。因此,您不能像s1.length那樣調用它(這會導致NullPointerException),直到您實際將值賦給s1。
如果你要修改字符串在一個循環或在有條件的情況下,需要在括號外的結果,您可能需要使用字符串S1 = NULL;
例如:
boolean test = true;
String s1 = null;
if (test) {
s1 = "true";
} else {
s1 = "false";
}
System.out.println("Results is: " + s1);
如果沒有定義S1的條件之前是零,你將有一個錯誤的打印
'字符串S1時,'='字符串S1 = NULL ;'在方法範圍內。 – 2014-08-28 12:09:24
@Peter:不,它肯定不是。我添加了一些更多的信息(希望)澄清。 – Keppil 2014-08-28 12:12:32