Java学习第三周
1.浅析C++与Java的内存分配
(1)对于C++
c++中有五大分区:栈区、堆区、代码区、全局/静态存储区、常量存储区
栈区(stack) --编译器自动分配释放,主要存放函数的参数值,局部变量值等;
堆区(heap) --由程序员分配释放;
全局区或静态区 --存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区;
字符常量区 --常量字符串放与此,程序结束时由系统释放;
程序代码区--存放函数体的二进制代码
(2)对于Java
Java中有六个区域:栈、堆、寄存器、静态域、常量存储、非RAM存储
寄存器:我们在程序中无法控制
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
堆:存放用new产生的数据
静态域:存放在对象中用static定义的静态成员
常量池:存放常量
非RAM存储:硬盘等永久存储空间
基本数据类型只在栈区创建
在Java中创建对象时,main()方法首先进栈,在栈中创建变量,然后由new关键字在堆区开辟空间,栈区的变量指向堆区空间的地址值(引用数据类型);
当程序结束后,Java中的new关键字和c++不同,Java使用new创建对象后,对象内存的释放由编译器在该变量不使用后自动释放,而c++需要手动delete释放;
2.链式编程
当在调用方法时,不需要用变量来接受结果,可以继续调用其他方法;
3.Java中不可以多继承;可以多层继承;每个类都直接或间接地继承于object;
4.本周学习了Java中的API;类似于c++中的STL;
String和ArrayList;