字符串和数组 的 引用传递

今天遇到了这样一道题:
public class Demo {

private String str = new String("aaaa");
private char[] ch = {'b','c','d'};

public static void main(String[] args) {
    Demo demo = new Demo();
    demo.test(demo.str, demo.ch);
    System.out.print(demo.str + "  ");
    System.out.println(demo.ch);
}

public void test(String str, char[] ch1) {
    str = "eeee";
    ch1[0] = 'f';
}

}
这道题最终的结果是: aaaa fcd。
刚开始看这道题想了好久,现在终于想通了,主要是因为自己太菜。我给大家分析一下,希望可以帮助到需要的人:
首先两个成员变量都是对象,都是引用对象。
当在main方法中调用test的方法的时候,传递的是两个引用到test中的形参当中,由于字符串所具有的特性,当str = “eeee”的时候,str引用发生了改变,在这个方法中的str指向了常量池中的eeee的位置。而Demo对象的成员变量str还是指向原来的堆中的地址。
对于char[]数据组来说引用地址一直没有发生改变,改变的是引用对象中的内容。所以会输出以上结果。
欢迎一起讨论,希望你们能关注我的博客,共同进步,共同学习,一起交流。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值