关于两个数组的疑问

首先是有一个数组初始化了
int []intt = new int[]{1,2,3,4,5,6,7,8,9};
定义一个数组等于前面初始化的数组变量
int []arrint = intt;
修改后一个数组的元素值
arrint[arrint.length - 1] = 0;
打印前一个数组的元素
System.out.println(intt[intt.length - 1]);
出来的结果是0.
而对象
String str = new String();
str = "abc";
String str1 = str;
System.out.println("str1:"+str1);
System.out.println("str:"+str);
str1 = "修改";
System.out.println("str1:"+str1);
System.out.println("str:"+str);
这个改变了就不会影响原来的值。
这两个都是对象,只不过一个是数组,而另一个是不是数组,后来想想可能和他们的存储方式有关系,数组是链式存储,如果改一个值的话,而不影响之前的变量,那么就要把数组中所有的元素的地址重新分配,要不能就会出现一个地址后面连着两个地址,这应该是不允许的,所以就只能是改变一个而另一个也被改变了,而String对象只是一个地址,当你重新赋值给他时,就等于是给了他一个新的地址,而改变这个有不会影响到其他,所以不会对赋予他值的对象有影响。不知这样理解是否正确???
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值