以下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