我一直想知道在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()),我的问题是该值的含义是什么,通常使用什么为吗
答案 0 :(得分:1)
每个对象都有一个toString()方法,默认方法是显示对象的类名表示,然后是“@”后跟其哈希码.hashCode的一般契约是,每当它在同一个对象上被调用时在执行Java应用程序期间,hashCode方法必须始终返回相同的整数,前提是没有在对象的equals比较中使用的信息被修改所以你所看到的是float和string数组的默认toString()表示。
答案 1 :(得分:1)
如上所述,只需打印即可调用对象的toString方法。由于此方法未被覆盖,因此将调用Object的toString方法。确切的输出在javadocs中指定 http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
说
getClass().getName() + '@' + Integer.toHexString(hashCode())
即。它是类名+“@”+对象的HexString hashCode()方法