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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 会飞的狼 中级黑马   /  2013-8-13 02:05  /  1924 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  看了张老师的打印数组例子后试着用迭代的方式打印多维数组,可是结果里面出现了很多地址值(还是什么其他的东西),难道数组里面有存了地址在里面吗?
  String [][] s5 = new String [][] {{"s1","s2","s3"},{"s4","s5","s6"}};
  printObject(s5);
  printObject("sssss");

private static void printObject(Object obj) {             //打印数组的方法(迭代)
  Class c = obj.getClass();
  if (c.isArray()) {
   int len = Array.getLength(obj);
   for (int i = 0; i < len; i++) {
   printObject(Array.get(obj, i));
   }
   System.out.println(obj);
  }
  else{
     System.out.println(obj);
   }
}
结果:
s1
s2
s3
[Ljava.lang.String;@1bc4459  //这些地址值是怎么来的
s4
s5
s6
[Ljava.lang.String;@12b6651   //这些地址值是怎么来的
[[Ljava.lang.String;@4a5ab2   //这些地址值是怎么来的
sssss

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

4 个回复

倒序浏览
楼主你好
你定义了一个二维String型数组,这就好像一个一维数组中存放一些一维String 型数组。、
在打印这个数组时将这个二维数组传入,马上你遍历这个二维数组,for循环第一次得到里面第一个String数组,
然后又递归调用打印数组方法,这样一维数组的值就一个个打印出来了,打印完后,接着又打印了System.out.println(obj);就等于将第一个String一维数组直接打印,打印的结果是数组第一个元素s1的hashCode值。
for循环三次就将里面两个String一维数组按上面那种方式打印出来,所以第二个[Ljava.lang.String;@12b6651   是s4的地址值。
将里面一维数组循环打印完后,for结束,会打印二维数组第一个元素的地址值。
回复 使用道具 举报
看了张老师的打印数组例子后试着用迭代的方式打印多维数组,可是结果里面出现了很多地址值(还是什么其他的东西),难道数组里面有存了地址在里面吗?
  String [][] s5 = new String [][] {{"s1","s2","s3"},{"s4","s5","s6"}};
  printObject(s5);
  printObject("sssss");

private static void printObject(Object obj) {             //打印数组的方法(迭代)
  Class c = obj.getClass();
  if (c.isArray()) {
   int len = Array.getLength(obj);
   for (int i = 0; i < len; i++) {
   printObject(Array.get(obj, i));
   }
   System.out.println(obj);
  }
  else{
     System.out.println(obj);
   }
}
结果:
s1
s2
s3
[Ljava.lang.String;@1bc4459  //这些地址值是怎么来的        ////////因为这里你是直接打印的,数组它本身是一个应用类型变量,打印它的时候,要重写 toString方法!
s4
s5
s6
[Ljava.lang.String;@12b6651   //这些地址值是怎么来的    //////这里也一样,要重写toString方法!
[[Ljava.lang.String;@4a5ab2   //这些地址值是怎么来的       //////同理,从写toSString方法就可以了!
sssss
回复 使用道具 举报
心灵之歌 发表于 2013-8-13 10:31
看了张老师的打印数组例子后试着用迭代的方式打印多维数组,可是结果里面出现了很多地址值(还是什么其他的 ...

不好意思,我多谢了一行代码,没看到,谢谢
回复 使用道具 举报
心灵之歌 发表于 2013-8-13 10:31
看了张老师的打印数组例子后试着用迭代的方式打印多维数组,可是结果里面出现了很多地址值(还是什么其他的 ...

我多谢了一行代码  不好意思   谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马