java编程思想,《java编程思想》学习笔记一

面向对象的三种基本特征: 1、抽象 2、继承 3、多态
2.2
java数据保存,6中存储方式
1) 寄存器(存储器内部):由编译器根据需要分配。程序没有直接控制权。
2) 堆栈(RAM):创建时需要知道所存储数据的“长度”和“存储时间”。保存对象的引用和简单类型。
3) 堆(RAM):保存对象。不需要知道所存储数据的“长度”和“存储时间”。
4) 静态存储(RAM):RAM中的特定位置。用static 关键字指出一个对象的特定元素是静态的。但Java 对象本身永远都不会置入静态存储空间。
5) 常数存储(ROM): 常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。
6) 非RAM存储:“流式对象”(另一台机器)、“固定对象”(磁盘)。
C++认为程序的执行效率是最重要的一个问题,所以它允许程序员作出选择。为获得最快的运行速度,存储以及存在时间可在编写程序时决定,只需将对象放置在堆栈(有时也叫作自动或定域变量)或者静态存储区域即可。这样便为存储空间的分配和释放提供了一个优先级。
为执行效率着想
a) C++没有自动垃圾回收机制,因为垃圾回收机制回带来额外的开销。
b) C++有两种创建对象的方式:1)在写程序时创建:在堆栈中创建(执行效率高,不灵活);2)动态创建:在堆中创建(运行时才能确定对象的准确类型和存在时间,灵活,但是执行效率偏低)。
数组:
C\C++ : 数据就是内存块,不安全。当数组越界时,C\C++“默认”接受,允许随机访问内存。
java: 创建对象数组时,对于数组引用初始化为null。创建原始类型数组时,分配内存空间划分0。当数组越界时,抛出运行时异常。由于需要检查每个数组的访问,所以会消耗一定的时间和多余的代码量,而且没有办法把它关闭。
12.2
clone 是Object类中的protected方法,对于需要克隆功能的子类将该clone方法覆写为public。
Object.clone()内部判断对象是否实现了Cloneable(空接口)。否则抛出CloneNotSupportedException。 implements cloneable 接口标记对象是可克隆的。
Object.clone(){
1、 判断对象是否实现了Cloneable接口
2、 利用RTTI获得需克隆对象的实际大小。
3、 按位复制。
}
浅层复制与深层复制
浅层复制: super.clone()
深层复制: super.clone(),并对对象中的每个引用都调用clone()。
1.6 多态
将一条消息发给对象时,如果并不知道对方的具体类型是什么,但采取的行动同样是正确的,这种情况就叫作“多态性”(Polymorphism)。对面向对象的程序设计语言来说,它们用以实现多形性的方法叫作“动态绑定”。
Tags:  java编程思想

延伸阅读

最新评论

发表评论