Java字符串变量设置-参考还是值?

问题描述

| 以下Java代码段来自AP计算机科学实践考试。
String s1 = \"ab\";
String s2 = s1;
s1 = s1 + \"c\";
System.out.println(s1 + \" \" + s2);
此代码的输出是BlueJ上的\“ abc ab \”。但是,可能的答案选择之一是\“ abc abc \”。答案可能取决于Java是否将String引用设置为基本类型(按值)还是对象(通过引用)。 为了进一步说明这一点,让我们看一个具有原始类型的示例:
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传递了类似于原始类型的String变量,则答案为\“ abc ab \”。但是,如果Java将String变量视为对任何其他Object的引用一样,则答案为\“ abc abc \” 您认为哪个是正确的答案?     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)