Java System.out.println() 一个数组

Java System.out.println() an array

我一直想知道在 java 中打印数组时得到的值意味着什么。

float[] array = new float[] {1f,1f,1f,1f};
System.out.println(array);

我收到的输出是[F@7fbe847c
我假设 F 表示浮动(如果我错了请纠正我)

我注意到当我使用字符串数组时,有些事情发生了变化

String[] array = new String[] {"a","a","a","a"}
System.out.println(array);

现在的输出是 [Ljava.lang.String;@7fbe847c
我假设 Ljava.lang.String;表示它是一个字符串数组(如果我错了请纠正我)。
无论哪种方式,@7fbe847c 都保持不变。

我的问题不是如何打印数组(我已经知道使用Arrays.toString()),我的问题是什么值的含义及其通常用于什么?

每个对象都有一个toString()方法,默认方法是显示对象的class名称表示,然后"@"后跟它的hashcode.The hashCode的通用契约是,每当在 Java 应用程序的执行期间,它在同一个对象上被多次调用,hashCode 方法必须始终 return 相同的整数,前提是在对象的等号比较中使用的信息没有被修改 那又怎样您看到的是浮点数和字符串数组的默认 toString() 表示形式。

如前所述,只是打印会调用对象的toString方法。由于尚未覆盖此方法,因此调用了 Object 的 toString 方法。确切的输出在 javadocs 中指定 http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()

表示

 getClass().getName() + '@' + Integer.toHexString(hashCode())

即它是 class 名称 + "@" + 对象 hashCode() 方法的 HexString