引用传递分析,两个程序输出值问题,挺简单,但有些不懂,求指教

package ch14;
class Message{
private int num;
void setNum(int num){
this.num = num;
}
int getNum(){
return this.num;
}
}

public class ch14_1 {
public static void main(String[] args) {
Message msg = new Message();
msg.setNum(100);
fun(msg);
System.out.println(msg.getNum());
}
public static void fun(Message temp){//引用传递
temp.setNum(30);
}

}

/*public class ch14_1{
public static void main(String[] args) {
String str = "hello";
fun(str);
System.out.println(str);
}
private static void fun(String temp){
temp = "world";
}
}*/

为什么第一个程序可以将值改为30,第二个程序无法将字符串改为world?
第一个程序里用了private封装把,封装有什么用,求详细解答

1个回答

string是不可变对象。当对它进行=赋值时。会创建一个新的引用。就不会修改参数对象的引用了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问