本问题已经有最佳答案,请猛点这里访问。
我一直想知道在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方法。 由于尚未重写此方法,因此将调用Object的toString方法。 确切的输出在javadocs中指定
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
这说
getClass().getName() + '@' + Integer.toHexString(hashCode())
即它是类名称+" @" +对象hashCode()方法的HexString
每个对象都有一个toString()方法,默认方法是显示该对象的类名表示形式,然后显示" @",然后显示其哈希码。hashCode的常规协定是:每当在同一对象上多次调用同一个对象时, 如果执行Java应用程序,则hashCode方法必须一致地返回相同的整数,前提是未修改该对象的equals比较中使用的信息,那么您将看到的是float和string数组的默认toString()表示形式。
谢谢,这似乎是我要寻找的