A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 焦健 高级黑马   /  2013-1-24 00:11  /  1721 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 焦健 于 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
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

6 个回复

倒序浏览
数组是引用类型吧,   arr=str.getBytes();   应该改变了arr所指向的那个数组对象~我觉得是这样的~

回复 使用道具 举报
王溢君 来自手机 中级黑马 2013-1-24 00:43:37
藤椅
数组就是引用类型的!!!!!!!
回复 使用道具 举报
当对数组进行改变时,在内存中应该是另外建立了一个新的数组存放改变后的数据,然后引用指向新数组,旧数组变垃圾。
回复 使用道具 举报
哦,谢谢楼上几位兄弟了。。我明白了。。{:soso_e100:}
回复 使用道具 举报
数组就是引用数据类型!
回复 使用道具 举报
周怡 中级黑马 2013-1-25 19:52:16
7#
str.getBytes() 返回一个字节数组,调用一次返回的都是一个新的数组对象,你打印的是对象引用的哈希码肯定是不一样的,因为返回的是一个新的变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马