Puzzle 12: ABC
对象的引用的和实体
对象的引用的和实体
char[] 不是 String.
以下两段代码执行以后, 是否输出相同的内容?
- 第一段: Object numbers = new char[]{'1', '2', '3'}; System.out.println(numbers);
- 第二段: System.out.println(new char[]{'1', '2', '3'});
输出结果分别是:
- [C@de6ced
- 123
居然不是一样的. 在具体打印时, 事实上调用了两个不同的方法:
原因可以这样简单地解释:
在Object numbers = new char[]{'1', '2', '3'};这句中,左边是右边的reference,右边就是具体的entity了,所以,左边打印出来是类名。
其他:
虽然字符型也属于整型,但通常不把它们当着数字来看待——对于println方法,当然想要输出字母而不是它对应的数字本身。char[]数组并非String, char[] 没有重写toString()方法。
附
- JLS 10.7 Array Members
- JLS 15.18.1.1 String Conversion
- Class.getName()