黑马程序员技术交流社区
标题:
关于直接打印数组问题
[打印本页]
作者:
北冥有鱼
时间:
2014-3-4 20:14
标题:
关于直接打印数组问题
String[] st1={"sd","fgr","geds"};
char[] st2={'s','d','f'};
int[] st3={1,2,43};
System.out.println(st1);
System.out.println(st2);
System.out.println(st3);
复制代码
现有代码如上, 输出结果如下:
[Ljava.lang.String;@18f5824
sdf
[I@1e3cd51
这三种数据类型,同样的直接打印数组名称,结果问什么都不相同?
作者:
e.c
时间:
2014-3-4 20:34
对于数组来说打印的是数组[数组类型和hash值
但对char[]是例外:
PrintStream已经有一个write(char[] buf)方法了,所以println(char[])会调用write方法把字符数组打印出来。
作者:
Aimer_WJY
时间:
2014-3-4 21:34
打印的是地址值,内存分配的空间地址不一样,打印的当然不一样
作者:
Amorvos
时间:
2014-3-4 22:04
这是由他们的toString()函数决定的,当你采用System.out.println输出时,自动调用该方法,也就是说
System.out.println(st1);
System.out.println(st1.toString());
复制代码
这两行代码意义完全一样。由于你是用的String,char,int,他们本身具有的toSting方法输出的效果就是你看到的。
你自己写的类,只有你重写该方能功法时才会输出不一样的内容。
作者:
love~陌
时间:
2014-3-5 15:51
第一个是数组+数组的地址值,第二个是数组,第三个是数组的地址值
作者:
wxk105
时间:
2014-3-5 16:10
数组初始化后就会创建于堆内存空间中,结果你也看到了它们的地址值,创建的类型不一样而且是三个数组,打印出的值肯定不一样;ps~你可以参考毕老师视频中数组的讲解。
作者:
小脚印
时间:
2014-3-5 17:26
一个对象调用toString()方法返回的字符串的一般形式为:创建对象的类的名字@对象的引用的字符表示。toString()方法就是把对象转换成String类型,转换的算法根据类型和实际需要而定。所以可以根据自己的需求重写 public String toString()f方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2