以下Java代碼片段來自AP計算機科學實踐考試。Java字符串變量設置 - 引用還是值?
String s1 = "ab";
String s2 = s1;
s1 = s1 + "c";
System.out.println(s1 + " " + s2);
該代碼的輸出是BlueJ上的「abc ab」。但是,可能的答案選擇之一是「abc abc」。答案可能取決於Java是否設置了像基本類型(按值)或類似對象(通過引用)的字符串引用。
爲了進一步說明這一點,讓我們來看一個例子與基本類型:
int s1 = 1;
int s2 = s1; // copies value, not reference
s1 = 42;
System.out.println(s1 + " " + s2); // prints "1 42"
但是,說我們必須的BankAccount 對象持有餘額。
BankAccount b1 = new BankAccount(500); // 500 is initial balance parameter
BankAccount b2 = b1; // reference to the same object
b1.setBalance(0);
System.out.println(b1.getBalance() + " " + s2.getBalance()); // prints "0 0"
我不確定字符串是哪種情況。它們在技術上是對象,但是我的編譯器在將變量設置爲對方時似乎將它們視爲基本類型。
如果Java傳遞像原始類型這樣的字符串變量,答案是「abc ab」。但是,如果Java將字符串變量視爲引用任何其他對象,則答案將爲「abc abc」
您認爲哪個答案是正確的?
你看過String的文檔嗎?它是說它是一個階級還是一個原始階級? – DJClayworth 2011-04-29 17:44:36
您可能想要閱讀[javadoc](http://download.oracle.com/javase/6/docs/api/java/lang/String.html),因爲它可以回答您的問題。 – 2011-04-29 18:01:30
'System.out.println(s1 +「」+ s2); //打印「1 42」'不是真的......它打印'「42 1」' – whytheq 2013-10-31 09:02:31