黑马程序员技术交流社区

标题: 数组问题。。 [打印本页]

作者: 焦健    时间: 2013-1-24 00:11
标题: 数组问题。。
本帖最后由 焦健 于 2013-1-24 18:30 编辑

请问大家,为什么将一个字符串转换为一个byte数组,并且存入到一个已经定义好的byte数组中,那么这个数组的地址值就会改变。我们知道字符串的改变改变的是地址的引用,但是byte不是引用数据类型,那么它本身的地址为什么会改变呢。
  1. public class Test5 {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 byte[] arr=new byte[5];
  5.                 System.out.println(arr.length+"--"+arr.hashCode());
  6.                 arr[1]=3;
  7.                 arr[0]=2;
  8.                 System.out.println(arr.length+"--"+arr.hashCode());
  9.                 String str="abc";
  10.                 arr=str.getBytes();
  11.                 System.out.println(arr.length+"--"+arr.hashCode());
  12.                
  13.         }

  14. }
复制代码
接下来是这一段代码运行的结果,请大家帮忙分析一下。。
  1. 5--6613606
  2. 5--6613606
  3. 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