int []s=new int[]{1,2}和int[] s={1,2}

前者是在堆中,后者是在栈中吗,这个是Java的,有点不懂他们的区别

2个回答

int []s=new int[]{1,2} 是 new出来的对象,无论对象是否存在,都会开辟出一块新内存来存放它
int[] s={1,2} 会先在内存中查找,如果内存中已经有{1,2}则直接返回该对象的引用
所以 int[] s={1,2} 和 int[] z={1,2} 的地址值是一样的, 而int []s=new int[]{1,2} 和 int []z=new int[]{1,2}则是不一样的

qq_39632416
yunyunTest 那后者是存在栈中还是常量池
大约 3 年之前 回复

在java中数组也是对象,都存在堆当中,而在栈当中只保存的是数组的引用(s) 说白了栈中保存堆中的地址而以。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问