黑马程序员技术交流社区

标题: 关于整型数组在内存中的推测? [打印本页]

作者: dicegame    时间: 2013-7-26 00:00
标题: 关于整型数组在内存中的推测?
本帖最后由 杜光 于 2013-7-28 09:42 编辑

package qbb;

public class Test {
    public static void main(String[] args){
        int[] a = new int[3];
        Object obj = new Object();
        System.out.println(a);
        System.out.println(obj);
    }
}
运行结果:
[I@12940b3
java.lang.Object@156b6b9

推测:
栈内存中的obj指向了堆内存中的Object对象
因此 System.out.println(obj);会输出java.lang.Object@156b6b9
而System.out.println(obj);也输出[I@12940b3
是不是意味着栈内存中定义了一个整型数组变量a,
它指向了堆内存中的一个对象
这个对象是由3个整型数组成呢(0,0,0)?还是3个Integer对象的组合?
求结论?
最好能给出运行结果


作者: toShareBeauty    时间: 2013-7-26 05:35
本帖最后由 toShareBeauty 于 2013-7-26 05:46 编辑

我可以负责任的告诉你这个对象是由3个整型数组成(0,0,0),但是在内存中的结构和你想想的不一样,除了3个整形数,还有其他单元,比如数组的长度,对象的头。
你可以用
  1. boolean b = a[0] instanceof Integer;
复制代码
看看,如果编译能通过说明是 Integer ,如果通不过,说明是 int 基本类型。



作者: dicegame    时间: 2013-7-26 09:11
toShareBeauty 发表于 2013-7-26 05:35
我可以负责任的告诉你这个对象是由3个整型数组成(0,0,0),但是在内存中的结构和你想想的不一样,除了3个 ...

谢谢大虾,膜拜中···




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2