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

© ㄗ灬Night|K 中级黑马   /  2013-10-17 09:34  /  2999 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ㄗ灬Night|K 于 2013-10-17 11:11 编辑

为什么char[]打印的是ABC,而int[]打印的是哈希值呢?
  1. package itcast;

  2. public class CharInt {

  3.         public static void main(String[] args) {

  4.                 char[] ch = {'A','B','C'};
  5.                 int[] arr = {1,2,3};
  6.                
  7.                 System.out.println(ch);
  8.                 System.out.println(arr);

  9.         }

  10. }
复制代码
打印结果: ABC
                   [I@18a992f

评分

参与人数 1黑马币 +3 收起 理由
周志龙 + 3

查看全部评分

25 个回复

正序浏览
在运行int[] arr = {1,2,3};的时候,arr只是存储的这个数组的首地址,所以打印出来的arr就是这个数组的首地址了,这个哈希值 [I@18a992f中第一个‘【’是数组的意思‘I’是int类型的意思,后面的18a992f是在你的电脑中这个数组的存储位置。打印这个哈希值,可以很快的知道一个变量的一些信息,比如说是不是一个数组,这个数组是什么类型的等等。如果想完全知道数组的信息,可以使用tostring方法进行输出

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
吕布抛弃了貂禅而选择了帮你顶
回复 使用道具 举报
汉高祖挥师杀向东罗马为你顶
回复 使用道具 举报
秦始皇站在阿房宫上使劲顶
回复 使用道具 举报
孔子亲自拜你为师天天顶
回复 使用道具 举报
老子看了会用道德经顶
回复 使用道具 举报
就算顶到史前也要顶
回复 使用道具 举报
接着使出葵花宝顶
回复 使用道具 举报
总之把它顶到顶
回复 使用道具 举报
再加上千斤顶
回复 使用道具 举报
用尽全力顶
回复 使用道具 举报
用尽全力顶
回复 使用道具 举报
不得不顶 ~~
回复 使用道具 举报
必须顶
回复 使用道具 举报
我顶~~~~~~~~~~~~~~~~
回复 使用道具 举报
顶~~~~~~~~~~~~~~~~
回复 使用道具 举报
本帖最后由 kellyzyb 于 2013-10-17 14:56 编辑
kellyzyb 发表于 2013-10-17 11:16
System.out.println()这个方法并没有以int[]为参数的overload 方法

所以系统认为 int[]是一个object


重新做了下整理和分析,希望对你有用:

System.out是一个PrintStream对象,print(println同理) 方法有N个重载,其中一个是pting(Object obj),查询api文档,此方法先调用了一个String.valueOf(obj)方法。查看此方法的源码: 当obj不等于空于时,自动调用obj.toString()方法。
  1. public static String valueOf(Object obj) {
  2. return (obj == null) ? "null" : obj.toString();
  3. }
复制代码
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: getClass().getName() + '@' + Integer.toHexString(hashCode())


所以当要打印整数数组时,会自动查找类型相匹配的方法进行重载,当没有对应的方法时,作为Object来处理,加载此方法 public void println(Object x) 最终打印出在内存中的地址值。
当是字符型数组时,有对应的public void print(char[] s) 方法。打印出字符串。而其它数组没有单独定义方法,当作Object来处理。
回复 使用道具 举报
To 金牌黑马 2013-10-17 14:03:44
9#
不错的回答
回复 使用道具 举报
如果楼主已经解惑,请将贴子设为提问结束
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马