GO_BY_GO_BY_GO 2017-04-19 09:21 采纳率: 50%
浏览 1873
已采纳

刚入门java新手咨询引用数据类型作为实参传递后方法内修改是否会对原数据进行修改

public class StringTest {
public static void main(String[] args) {
String a="aaa";
System.out.println(a);
change(a);
System.out.println("修改后的a:"+a);

}

public static void change(String a) {
    String b="bbb";
    a=b;
    System.out.println("change方法中的a:"+a);
}

}
String为引用数据类型,传递过去的是地址,地址在方法内进行了重新修改,出来后指向不应该是指向了bbb吗?怎么还是aaa?求助图片说明图片

  • 写回答

11条回答 默认 最新

  • hongyu83916 2017-04-19 13:18
    关注

    自己也是初学者,见解不深刻,回答有点武断。不好意思,一起学习,我今天也遇到这个问题。回答之后,感觉自己的结论有问题。
    借你宝地,请高手问答:
    public class QueueTest {
    public static void main(String[] args) {
    String[] a=new String[1];
    a[0]="aaa";
    System.out.println(Arrays.toString(a));
    change(a);
    System.out.println("main中:"+Arrays.toString(a));
    }
    public static void change(String[] a){
    String[] b={"bbb"};
    a[0]=b[0];
    a=b;
    System.out.println("change中:"+Arrays.toString(a));
    }
    }
    //===变了==
    [aaa]
    change中:[bbb]
    main中:[bbb]
    //===============================
    /*public class QueueTest {
    public static void main(String[] args) {
    String[] a=new String[1];
    a[0]="aaa";
    System.out.println(Arrays.toString(a));
    change(a);
    System.out.println("main中:"+Arrays.toString(a));
    }
    public static void change(String[] a){
    String[] b={"bbb"};
    a=b;
    System.out.println("change中:"+Arrays.toString(a));
    }
    }
    //===没变
    [aaa]
    change中:[bbb]
    main中:[aaa]
    */

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料