黑马程序员技术交流社区
标题:
关于toString的提问
[打印本页]
作者:
a7228274
时间:
2015-8-9 17:29
标题:
关于toString的提问
1、int[ ] arr= {1,2,3,4,5,6};
2、String str=Arrays.toString(arr);
3、System.out.println(str);//调用了String的toString方法
4、System.out.println(arr); //输出的是哈希值
问一下,arr数组是引用类型,把引用类型传递参数,是会改变原来的,这里第二步把arr传入了toString,那么原来的arr不就应该变为字符串吗,那么第四步应该调用String的toString方法输出数组,但是为什么输出的是哈希值呢?
作者:
godboy001
时间:
2015-8-9 21:56
不懂,知识掌握的不好,坐等大神来解答
作者:
谭威威威威
时间:
2015-8-9 22:16
作者:
一枚小小媛
时间:
2015-8-10 22:44
数组相当于是一个小容器,是引用的地址来存放元素。直接用System.out.println()打印,是不可以拿到每个元素的。(我以前也是犯这种错误)。
如果是单个的数组元素倒是可以这么获取并打印:例如 System.out.println(arr[?]);
那,如果要打印全部元素,一定一定要用遍历的方式!也就是for循环了。重要的东西要说三遍。
数组打印全部元素要用for循环遍历,
数组打印全部元素要用for循环遍历,
数组打印全部元素要用for循环遍历。
作者:
江峰
时间:
2015-8-10 23:05
暂时不懂,帮顶
作者:
耀阳圣尊
时间:
2015-8-11 11:02
你可以这么输出
int a[] = {1,2,3,4};
System.out.println(Arrays.toString(a));
复制代码
如果您觉得我的回答还满意的话,请回复一下我
我的QQ:2355928351
如果您还有其他的入学前问题可以加我的QQ
作者:
18027587106
时间:
2015-8-11 11:23
1、int[ ] arr= {1,2,3,4,5,6};
2、String str=Arrays.toString(arr);
3、System.out.println(str);//调用了String的toString方法
4、System.out.println(arr); //输出的是哈希值
第一步你只是定义了一个数组
第二步你定义了一个字符串来表示你数组中的内容
第三步打印常量内存中字符串
第四步打印数组的内存地址
其实第二步中的arr的内容就是第四步中打印的地址,然后通过Arrays类调用toString()方法找到堆中的内容
作者:
a348639336
时间:
2015-8-11 11:34
7楼回答很好了,直接打印数组显示的可能是哈希值地址,要显示数组内容,还是要遍历,我也是看视频学得,加油
作者:
RedProtector
时间:
2015-8-11 11:44
第二步只是把arr的值赋给了了toString方法里的参数,运算后生成的值赋给str,arr本身的值没变。
相当于:
toString(parameter);
parameter = arr;
所以第四步输出的是哈希值。
作者:
zby_allan
时间:
2015-8-12 22:30
我分析因为参数也是在栈里面临时创建的引用,并不是对象本身。
作者:
burningzzy
时间:
2015-8-12 23:09
同意七楼的回答。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2