代码
int []arr = new int[4];
System.out.println(arr);
输出类似于
[I @ 54640b25
编译器究竟打印出来的是什么? arr的内存地址?与C不同,Java似乎没有将数组名称(单独)等同于数组的第一个位置。
答案 0 :(得分:6)
在Java中,每个对象都有toString()
方法,而数组是对象。默认显示类名表示,然后添加“@”,然后添加哈希码:
类Object的
toString
方法返回包含的字符串 对象是实例的类的名称,at-sign 字符“@”,以及散列的无符号十六进制表示 对象的代码
尝试打印以下行,您应该得到相同的输出:
int[] arr = new int[5];
System.out.println(arr.getClass().getName() + "@" + Integer.toHexString(arr.hashCode()));
答案 1 :(得分:3)
使用以下命令打印数组的值:
Arrays.toString(arr);
使用System.out.println(arr)
目录将打印使用默认的toString
方法,该方法返回:
object.getClass().getName() + "@" + Integer.toHexString(object.hashCode())