本帖最后由 javamov 于 2013-8-22 17:30 编辑
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间
问题: Person thisman = new Person(); 我感觉这个和C++中的指针的指针定义的很像
解答:===引用对象操作一块内存地址,其实和指针一样的。
java中jvm管理着内存对象,C/C++可以更灵活的使用指针,也可以直接使用电脑的全部内存,但具有危险性,
java不会使服务器因内存溢出而崩溃,但C/C++是可以由于某个语句的问题就可以使你的电脑崩溃,java只会是jvm崩溃,
其实java中有内存管理机制,很久没使用的对象java会帮助我们释放,不需要我们像C/C++一样手动释放,许多C/C++经常
会碰到内存溢出的情况,但java很少。(我想起以前老师给我们的一句话:C/C++中的指针就像枪一样,枪是很危险的但也是
作用很大的。看你如何去掌握了。)
问题:而且在JAVA中,类中还可以包含自己类的对象,这在C++中是不可能的。
解答:这正是java的优势OOP
|