黑马程序员技术交流社区
标题:
数组问题。。
[打印本页]
作者:
焦健
时间:
2013-1-24 00:11
标题:
数组问题。。
本帖最后由 焦健 于 2013-1-24 18:30 编辑
请问大家,为什么将一个字符串转换为一个byte数组,并且存入到一个已经定义好的byte数组中,那么这个数组的地址值就会改变。我们知道字符串的改变改变的是地址的引用,但是byte不是引用数据类型,那么它本身的地址为什么会改变呢。
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte[] arr=new byte[5];
System.out.println(arr.length+"--"+arr.hashCode());
arr[1]=3;
arr[0]=2;
System.out.println(arr.length+"--"+arr.hashCode());
String str="abc";
arr=str.getBytes();
System.out.println(arr.length+"--"+arr.hashCode());
}
}
复制代码
接下来是这一段代码运行的结果,请大家帮忙分析一下。。
5--6613606
5--6613606
3--22608339
复制代码
作者:
高毅
时间:
2013-1-24 00:32
数组是引用类型吧, arr=str.getBytes(); 应该改变了arr所指向的那个数组对象~我觉得是这样的~
作者:
王溢君
时间:
2013-1-24 00:43
数组就是引用类型的!!!!!!!
作者:
侯丛政
时间:
2013-1-24 01:08
当对数组进行改变时,在内存中应该是另外建立了一个新的数组存放改变后的数据,然后引用指向新数组,旧数组变垃圾。
作者:
焦健
时间:
2013-1-24 18:24
哦,谢谢楼上几位兄弟了。。我明白了。。{:soso_e100:}
作者:
高浩
时间:
2013-1-25 13:36
数组就是引用数据类型!
作者:
周怡
时间:
2013-1-25 19:52
str.getBytes() 返回一个字节数组,调用一次返回的都是一个新的数组对象,你打印的是对象引用的哈希码肯定是不一样的,因为返回的是一个新的变量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2