2
回答
arry的堆内存开辟问题
注册华为云得mate10,2.9折抢先购!>>>   

int arry [] = new int [] {1};     这个在堆内存中开辟了空间

int arry [] = {1};  这个在 堆 内存里面 是否 开辟了一块区域??

举报
朱柳瑞
发帖于5年前 2回/96阅
共有2个答案 最后回答: 5年前
int[] array1 = new int[]{1};
int[] array2 = {1};
System.out.println(array1);
System.out.println(array2);
两种不同的写法实际上调用了同一个构造器,所以行为是一致的
打印出来看一下,打印出来可能是这样[I@b5dac4  其中“[I”代表Integer对象,
“@”之后跟的是一个hashcode值。
hashcode值表示对象的散列码,散列码对应一个对象引用(在堆栈上),
对象引用指向一个对象实例(在堆中)。
结合起来就是,new在堆上开辟了一块内存,相应的在堆栈上维护对象的引用

        

大哥,这两个在java转换成底层的实现之后,表述的意思是完全一样的。

如果上面分配了内存空间,下面的也一定开辟了内存空间

请使用javap 看一下

--- 共有 1 条评论 ---
朱柳瑞好的 那就好了 谢了 5年前 回复
顶部