站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题请问java中有堆,堆栈这些概念吗??

请问java中有堆,堆栈这些概念吗??

摘要: 请问java中有堆,堆栈这些概念吗??


比如

类A

然后

A aa = new A();


那么这个aa对象是分配在堆还是堆栈上的呢???


如果在c++中

A * pp = new A();

那么pp就是在栈上的,但是指向的对象是在堆上的,
请问java中是怎么分配的,谢谢了




初学,不好意思阿,不要嫌简单~~


在java中,A这个对象通过NEW以后是被分配到堆里面的,但是指向A对象的aa是在栈里面存放的,它和C++里的指针是一样的。在JAVA里,虽然说是没有指针这一概念的,但是它的内部还是用到指针的


没听说过,那都是数据结构里面的东西,我倒是觉得由于java是纯粹的oo的语言,所以没有看到这些概念了。到底有没有用到,应该还是用到了。学了编译原理都该知道是怎么回事。


这些概念是存在的,不仅仅是在实现层才会涉及到堆和栈。
如果不清楚它们,是很难写出好的程序的,另外我也不相信不明白堆和栈的人能写出好的程序。

建议楼主以String类开始,以小见大。理解相关的概念。



按我的理解,Java 中的 A aa = new A(); 跟 C++ 中的 A * pp = new A(); 几乎是一样的,aa 是在栈上的,而它指向的对象是在堆上的。



哦,谢谢了,不错


不过,由于没有指针,好像java不能做很复杂的操作也,这是我的感觉。我是说对内存的操作,我没搞过。
我做过j2ee,j2se。也可能是没搞过j2me的缘故把,楼主不要见怪。


恩,好的,
谢谢楼上的,呵呵




复杂,没研究过


tianhao1013(黑黑) ( ) 正解
java中的栈不用来存放对象,所有对象都是存放在堆上的。


学习....


我们刚讲了 栈区: 形式参数(方法参数)频繁的数据交换
堆区: new出的对象在堆区


也就是你说 aa 在堆区


我在THINK IN JAVA 里面看到关于这个问题说的是。;
对象是放在堆里面的。放在这里面的最大好处就是非常灵活。但是放在这里面则需要更多的时间。而对象的句柄是放在堆栈里面的。对象和对象的句柄是分开存放的!!!!~


变量,对象的句柄放在栈里。对象放在堆里。
aa就是放在栈里。但是aa所对应的对象则是放在堆里。。。


java的对象都在堆中


学习中.....


简单类型都在stack里,
复杂类型(对象都是)在heap里,
句柄(指针,不过没指针强大的咚咚)在stack里;如:A aa = new A(); aa在stack里

System.out.println(aa.HashCode())可以看到这个对象在内存里的地址(10进制)
具体哪些地址是stack,哪些地址是heap的小弟就不懂了



java中所有的对象都是存在堆中的,这个在《JAVA2核心技术》里有提到,今天刚看了这些内容。java 中的对象变量可以理解为C++中的对象指针,即在楼主的举例中aa就类似于pp。


为什么int和integer,一个是基本类型,一个是引用类型的数据,但是这样定义的数据可以直接相加,是如何自动转换的呢?


大家帮忙解答一下??
大家帮忙解答一下??




Java中和C++差不多。

A aa = new A();

aa这个引用是在Java虚拟机实现的栈上的,而aa指向的对象是建立在堆中的。

但是你声明基本类型的时候,比如:

int i= 1;

这个i就是分配在栈上的一小段了。



JAVA数据类型可以自动转换的


为什么int和integer,一个是基本类型,一个是引用类型的数据,但是这样定义的数据可以直接相加,是如何自动转换的呢?
//这两者之间的处理是不同的,能自动转换是在JDK5.0下的新特性;是由编译器帮你完成了转换过程;


对象是放在堆里面的。放在这里面的最大好处就是非常灵活。但是放在这里面则需要更多的时间。而对象的句柄是放在堆栈里面的。对象和对象的句柄是分开存放的


java.util.Stack 这个是栈


和C++ 一样


类A

A aa = new A(); //aa这个变量的值是引用,指向堆中的对象A






JAVA中这些概念是有的;

而且对于性能的改进以及对象的生命周期的认识都有帮助的;

最简略的说:
堆是存放对象的内存区域
栈是存放常量、引用等的内存区域


mark


昨天回的第二个贴是错误的!!!!
aa是被放在栈里面的。。aa是实例化的对象 抽象的放在堆里面





↑返回目录
前一篇: 大家帮忙啊,我使用MySQLQueryBrowser.exe时,输入SQL语句时不能输入中文怎么办呀,帮忙啊
后一篇: jsp中可否使用一组文本框进行提交,就如同checkbox的效果?