A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dicegame 中级黑马   /  2013-7-26 00:00  /  838 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 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对象的组合?
求结论?
最好能给出运行结果

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

2 个回复

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

谢谢大虾,膜拜中···
回复 使用道具 举报
本帖最后由 toShareBeauty 于 2013-7-26 05:46 编辑

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


评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马