Deadwood_ 2017-05-20 01:31 采纳率: 0%
浏览 715

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

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条回答

  • oyljerry 2017-05-20 08:08
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试