Java 数组引用说明

Java 数组引用说明,java,arrays,Java,Arrays,对于代码 int []arr = new int[4]; System.out.println(arr); 输出看起来像 [I@54640b25 编译器到底打印出了什么?arr的内存地址?与C不同,Java似乎并不将数组名(单独地)与数组的第一个位置相等。在Java中,每个对象都有方法,数组都是对象。默认情况下,显示类名表示,然后添加“@”,然后添加哈希代码: class对象的toString方法返回一个由 对象作为实例的类的名称,at符号 字符“@”和哈希的无符号十六进制表示形式 对象的代码

对于代码

int []arr = new int[4];
System.out.println(arr);
输出看起来像

[I@54640b25

编译器到底打印出了什么?arr的内存地址?与C不同,Java似乎并不将数组名(单独地)与数组的第一个位置相等。

在Java中,每个对象都有方法,数组都是对象。默认情况下,显示类名表示,然后添加“@”,然后添加哈希代码:

class对象的
toString
方法返回一个由 对象作为实例的类的名称,at符号 字符“@”和哈希的无符号十六进制表示形式 对象的代码

尝试打印以下行,您将获得相同的输出:

int[] arr = new int[5]; 
System.out.println(arr.getClass().getName() + "@" + Integer.toHexString(arr.hashCode()));
在Java中,每个对象都有方法,数组都是对象。默认情况下,显示类名表示,然后添加“@”,然后添加哈希代码:

class对象的
toString
方法返回一个由 对象作为实例的类的名称,at符号 字符“@”和哈希的无符号十六进制表示形式 对象的代码

尝试打印以下行,您将获得相同的输出:

int[] arr = new int[5]; 
System.out.println(arr.getClass().getName() + "@" + Integer.toHexString(arr.hashCode()));

使用以下命令打印数组的值:

Arrays.toString(arr);
使用
System.out.println(arr)
目录将使用默认的
toString
方法进行打印,该方法返回:

object.getClass().getName() + "@" + Integer.toHexString(object.hashCode())

使用以下命令打印数组的值:

Arrays.toString(arr);
使用
System.out.println(arr)
目录将使用默认的
toString
方法进行打印,该方法返回:

object.getClass().getName() + "@" + Integer.toHexString(object.hashCode())

另外,数组是java中的对象,与C不同。将arr作为参数传递给println()会自动调用arr的toString()方法?@Duncan,只是为了澄清在println()中传递任何对象会自动调用该对象的toString。另外,数组是java中的对象,与C不同。将arr作为参数传递给println()自动调用arr的toString()方法?@Duncan,只是为了澄清在println()中传递任何对象会自动调用该对象的toString。这是一个好问题,但我相信它已经在这里得到了解决。可能是一个好问题的重复,但我相信它已经在这里得到了解决。可能是