Java编程思想_笔记(五)
来源:互联网 发布:网络拒绝接入华为 编辑:程序博客网 时间:2024/05/22 15:21
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一。
用构造器确保初始化
构造器是一种特殊类型的方法,因为它没有返回值。方法本身不会自动返回什么,但可以选择让它返回别的东西。
this关键字:
this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用就可以了。只有明确指出对当前对象的引用时,才需要使用this关键字。例如:当需要返回当前对象的引用时:
public class leaf{
int i = 0;
leaf increment(){
i++;
return this;
}
void print(){
System.out.println("i = "+i);
}
public static void main(String[] args){
leaf x = new leaf();
x.increment().increment().increment().print();
}
}
除构造器之外,编译器禁止其他任何方法调用构造器,只能是构造器调用构造器
static关键字:
static(静态)方法中没有this关键字的方法,在static方法的内部除非使用引用否则不能调用非静态方法;如果你传递一个对象的引用到静态方法里(静态方法可以创建其自身的对象),然后通过这个引用(和this效果相同),你就可以调用非静态方法和访问非静态数据成员了。
清理:
finalize()方法:工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。finalize并非析构函数。
Java对象并非总是被回收。1、对象可能不被垃圾回收。2、垃圾回收并不等于“析构”。3、垃圾回收只与内存有关。
无论是“垃圾回收”还是“终结”,都不保证一定会发生。
finalize()可能使用的方式:
class Book{
boolean checkedOut = false;
Book(boolean checkOut){
checkedOut = checkOut;
}
void checkIn(){
checkedOut = false;
}
protected void finalize(){
if(checkedOut)
System.out.println("Error:checked out");
}
}
public class TerminationCondition{
public static void main(String[] args){
Book novel = new Book(true);
novel.checkIn();
new Book(true);
System.gc();
}
}
本例中的终结条件是:所有的Book对象在被当作垃圾回收前都应该被签入(check in),System.gs()用于强制进行终结动作。
垃圾回收:
引用计数:一种简单但速度很慢的垃圾回收技术。每个对象都含有一个引用计数器,当有引用连接至对象时,引用计数加1,当引用离开作用域或被置为null时,引用计数减1.当发现某个对象的引用计数为0时,就释放其占用的空间。
停止-复制(stop-and-copy):先暂停程序的运行,然后将所有存活的对象从当前堆中复制到另外一个堆中,没有被复制的全部是垃圾。缺点:首先有两个堆,在两个堆之间进行执行;当程序稳定状态是,复制式回收期仍然将所有内存自一处复制另一处。
标记-清扫(mark-and-sweep):遍历所有存活对象,并在标记完成所有对象后执行清理动作。
自适应技术:自适应的、分代的、停止-复制、标记-清扫。
枚举类型:
枚举类型的关键字为enum,创建enum时编译器会自动添加一些有用的特性:toString()方法,以便可以很方便的显示某个enum实例的名字;ordinal()方法,用来表示某个特定enum常量的声明顺序;static values()方法,用来按照enum常量的声明顺序,产生由这些常量构成的数组。
enum关键字经常和switch语句使用。
- Java编程思想_笔记(五)
- Java编程思想_笔记(一)
- Java编程思想_笔记(二)
- Java编程思想_笔记(三)
- Java编程思想_笔记(四)
- JAVA编程思想_笔记(六)
- JAVA编程思想_笔记(七)
- Java编程思想_笔记(八)
- JAVA编程思想_笔记(九)
- JAVA编程思想_笔记(十)
- JAVA编程思想_笔记(十一)
- Java编程思想笔记(五)
- Java编程思想笔记-五
- java编程思想阅读笔记(五)持有对象
- Java编程思想_第八章_多态笔记
- Java 编程思想(五)Java泛型
- 4. java编程思想读书笔记(五)
- java编程思想(五)总结
- 指针与数组 (一)
- 【转载】cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- CCLayer 与 CCParallaxNode 结合实现视差滚动界面应注意的地方
- cocos2d 0.99 与cocos2d v2.1 restoreOriginalFrame 播放动画使用重置默认桢的区别
- IOS 8.1.3 GameCenter code15 沙盒无法登陆
- Java编程思想_笔记(五)
- iOS8.0以上出错Terminating app due to uncaught exception \'NSInvalidArgumentException\', reason: \'Invalid Region\'
- MyElipes遇到 source not found解决方案
- CS50 任务3 笔记
- 用于Camera Apk显示的控件
- Search a 2D Matrix
- 互联网的江湖:十年轮回,借江山一用,可曾留下痕迹
- 十分钟学会初步使用Spring_注解篇
- 保留代码