各位大侠,小弟初涉Java,有一个关于数组的疑惑……
Class Main{
public static void main(String[] args){
A[] aArr = new A[10];
int[] intArr = {1,2,3};
}
}class A{
}请问,上面main函数里,两个数组在内存中的保存是一样的么?
如果我没有理解错的话,aArr与intArr都指向堆中的对象,其中aArr对象中保存的是10个指向其他A的引用,那么intArr呢?他保存的是基本类型,那么intArr指向的对象里保存的是什么呢?又在哪里保存呢?
Class Main{
public static void main(String[] args){
A[] aArr = new A[10];
int[] intArr = {1,2,3};
}
}class A{
}请问,上面main函数里,两个数组在内存中的保存是一样的么?
如果我没有理解错的话,aArr与intArr都指向堆中的对象,其中aArr对象中保存的是10个指向其他A的引用,那么intArr呢?他保存的是基本类型,那么intArr指向的对象里保存的是什么呢?又在哪里保存呢?
解决方案 »
- html提交乱码问题 使用localhost提交了就乱 而使用127.0.0.1就不乱
- swing中关于图片上传问题
- 求助:Java 如何分行读取txt里内容进行登入身份验证~!
- StringBuffer和StringBuilder的区别?
- struts单选按钮动态绑定
- 求助:不管运行任何程序,MyEclipse都提示你could not find the main class.program will exit
- 初学java用什么书最好?
- DataOutputStream在txt文件中写东西的文件。。
- ++++++++Applet如何访问服务器端文件+++++++++
- 不用表格,如何滚动查询?(解决问题者:多加80分)
- 请大家帮我改进一下java性能问题。高手快进来看看啊!
- PipedOutputStream
============================
都指向栈,基本类型在栈中创建其中aArr对象中保存的是10个指向其他A的引用,那么intArr呢?他保存的是基本类型,那么intArr指向的对象里保存的是什么呢?又在哪里保存呢?
=====================================================================================================================
数组里保存的都是具体对象的地址,如intArr 里保存的是1,2,3这3个int的地址
aArr现在还是空的,但是内存已经划分给它了
A[] aArr = new A[10];
我以为也是int[]
A[] aArr = new A[10]; 可以保存10个A的实例,只不过现在是空的。
只要是用new操作符创建的对象都是在堆中的,基本类型都在栈中,大概就是这样
aArr-》堆中的对象,堆中的十个对象的引用又指向10个A类的对象,只不过你现在都是空的,还没有创建。
intArr-》堆中的对象,里边保存的是1,2,3
谢谢楼上!!!!!
像int[] intArr = {1,2,3};这样的基本类型数组,里面的1,2,3匙直接保存在intArr 内存空间里的
正常的来创建一个int a = 10; 这个int是保存在栈中的,int数组你可以把它当成特殊情况吧
这里最让我疑惑的是intArr指向的数组对象里保存的1,2,3等是保存在栈里还是堆里……
麻烦大哥再给看看,我知道这么简单的问题问出来,大哥们都不看的……
int[] intArr = {1,2,3}; 创建了一个对象数组,并在堆中给分配了3个空间,1,2,3,这3个值就直接放在这3个空间里,所以这3个字也就在堆里。
对于int a = 10;这样声明了一个int变量,这个10时放在栈中的