1.Object数组中不能直接有数组元素吗?如Object [] a = {1,2,true,{1,2,3}}。
    2.如果先
         int[] f = {0,1,2};
Object [] a = {f}; 
        则输出的结果是:[I@35ce36                     
     如果说f是一个引用,在输出时输出的是f存放的地址,那么程序每次运行时计算机分配给{0,1,2}的地址应该是随机的吧?那也就是f的地址每次也不一定会一样吧?也就是说“[I@35ce36”每次都会不同,但在不同的机子上不同的时段运行程序,每次输出的结果都是“[I@35ce36”,而且不管如何修改数组f的值(包括往数组f中添加数据,改变数据的值等),结果都是“[I@35ce36”。逻辑能力较差,说的比较烦琐,还望高手指点下啊。public class Test
{
public static void main(String [] args)
{
int c = 88;
int[] f = {0,1,2};
Object [] a = {c,f};                     
                  for(int i=0;i < 2;i++)
System.out.print(a[i]+" ");
}
}

解决方案 »

  1.   

    1.这个地址是一个偏移地址。
    2.这个地址是JVM用自己管理的内存。不是机器的实际内存。
    3.这个地址是某个HASH算法算出来的。以上是凭记忆,可能有误。欢迎高手指正。
      

  2.   

    修改一下:
    2.这个地址是JVM用自己管理的内存的地址。不是机器的实际地址。 
      

  3.   

        大BUG猛啊!
        “2.这个地址是JVM用自己管理的内存的地址。不是机器的实际地址”,那为什么每次数组f的偏移地址都一样呢?按道理说每次退出程序再进来运行,JVM给数组f的地址应该不一样吧?
      

  4.   

    最终调用的方法是
        public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }[I@35ce36
    getClass().getName():I@
    Integer.toHexString(hashCode()):35ce36hashCode 的常规协定是: 
    在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数