黑马程序员技术交流社区

标题: java新手疑问 [打印本页]

作者: fengche    时间: 2013-10-16 11:49
标题: java新手疑问
本帖最后由 fengche 于 2013-10-17 13:27 编辑

  char[] numbers = {'1', '2', '3'};
        System.out.println(numbers);
System.out.println("ABC" + numbers);
打印结果
---------- java ----------
123
ABC[C@1224b90

Output completed (0 sec consumed) - Normal Termination

为什么在前面添加了一个字符串,就不能打印出数组中的值呢?
作者: 周志龙    时间: 2013-10-16 12:28
这是参数number的内存地址,这个视频中有详解,请楼主看下基础视频
作者: 郑齐育    时间: 2013-10-16 12:28
首先你要知道有很多个println()的重载方法,第一次打印调用的是public void println(char[] x)此方法的行为就像先调用 print(char[]) 然后调用 println() 一样。 第二次因为数组前面有字符串,系统会先将和字符串连接的内容(引用类型和数据类型都一样)转换成字符串(也就是调用对象的toString()方法,对于你的代码来说返回值就是[C@1224b90)然后在整体打印出来。
要习惯查询jdk文档,不论你是新手还是老手。
希望对你有帮助。
作者: 张运    时间: 2013-10-16 12:35
在字符串后面加上+号,此时的加号是字符串的连接,numbers是一个数组,要连接必须要数组强转成字符串,此时numbers是引用数据类型,在连接过程中他将内存地址与字符串进行连接




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2