比如类A然后A aa = new A();
那么这个aa对象是分配在堆还是堆栈上的呢???
如果在c++中A * pp = new A();那么pp就是在栈上的,但是指向的对象是在堆上的,
请问java中是怎么分配的,谢谢了
那么这个aa对象是分配在堆还是堆栈上的呢???
如果在c++中A * pp = new A();那么pp就是在栈上的,但是指向的对象是在堆上的,
请问java中是怎么分配的,谢谢了
解决方案 »
- 一个日期重叠的算法
- 偶“嗷嗷待哺“的初学者!高手,大虾进来指点一二,感激不尽!
- 使用java链接ACCESS 怎么复制mdb文件中的一个表
- 用Graphics2D的rotate和scale方法来旋转和翻转为什么总是不能显示图片?
- 请教一个关于Java抛出异常问题,在线等!!
- ultraedit中编译java程序出现的问题
- 如果把下列字符串转为我需要的格式,各位大虾们给个算法(三百分求救)
- 请问在log4j中的DailyRollingFileAppender如何设定输出目录啊?
- 怎样读取一个URL地址页面的内容啊?注意:要带上一类型的post参数来访问指定的页面!急!解决大分送上!
- JAVA抽象类的具体用法!
- 如何在java中调用C代码,请高手指教!(100分求助)
- 程序哪里有错啊
如果不清楚它们,是很难写出好的程序的,另外我也不相信不明白堆和栈的人能写出好的程序。建议楼主以String类开始,以小见大。理解相关的概念。
我做过j2ee,j2se。也可能是没搞过j2me的缘故把,楼主不要见怪。
java中的栈不用来存放对象,所有对象都是存放在堆上的。
堆区: new出的对象在堆区
对象是放在堆里面的。放在这里面的最大好处就是非常灵活。但是放在这里面则需要更多的时间。而对象的句柄是放在堆栈里面的。对象和对象的句柄是分开存放的!!!!~
aa就是放在栈里。但是aa所对应的对象则是放在堆里
复杂类型(对象都是)在heap里,
句柄(指针,不过没指针强大的咚咚)在stack里;如:A aa = new A(); aa在stack里System.out.println(aa.HashCode())可以看到这个对象在内存里的地址(10进制)
具体哪些地址是stack,哪些地址是heap的小弟就不懂了
//这两者之间的处理是不同的,能自动转换是在JDK5.0下的新特性;是由编译器帮你完成了转换过程;
堆是存放对象的内存区域
栈是存放常量、引用等的内存区域
aa是被放在栈里面的。。aa是实例化的对象 抽象的放在堆里面