2018.10.6学习笔记

10.6学习笔记

今天学习了《Java编程思想》的第五章以及《大话设计模式》的第六章。下面对今日学习收获与疑惑作总结。


《Java编程思想》部分:
1.默认构造器:
如果你写的类中没有构造器,则编译器会自动帮你创建一个默认的构造器。但是,如果你已经定义了一个构造器(无论是否有参数),编译器就不会帮你自动创建默认构造器

2.this关键字:
①this关键字通常表示的是对当前对象的引用
②Java在构造方法中,语句this(参数列表)应在任何可执行语句之前出现无参数或参数少的构造方法可以用this调用参数多的构造方法

3.垃圾回收:
①Java有垃圾回收器负责回收无用对象所占的内存资源,但是有种特殊情况:你的对象并非通过new创建而是获得一块“特殊”的内存区域。因为垃圾回收器只知道释放那些由new创建的对象,所以它不知道该如何释放该对象的这块“特殊”内存,为了应对这种情况,Java允许在类中定义一个名为finalize()方法
②finalize()是Object中的方法,当垃圾回收器将要回收对象所占用的内存之前被调用,即当一个对象被虚拟机宣告死亡时会调用它的finalize()方法,让次对象可以处理它生前的最后事情,并且在下一次垃圾回收动作发生时刻,才会真正回收对象所占的内存
如果Java虚拟机并未面临内存耗尽的情形,他是不会浪费时间去执行垃圾回收以恢复内存的,因为垃圾回收本身也有开销,如果不去使用它,那么就不用支付这方面的开销。
垃圾回收器对于提高对象的创建速度,却具有明显的效果存储空间的释放竟然会影响存储空间的分配

4.初始化:
①变量的初始化发生在任何的方法(包括构造方法)被调用之前无论变量在何处被声明,在方法下面或者构造方法下面也好。
②静态变量只有在必要时刻才会进行初始化(创建对应的对象,此对象需要调用静态变量),此后,静态变量不会再次被初始化,即静态变量只会初始化一次(非静态变量在每次创建对象时候都会进行初始化)。
③初始化的顺序是先静态再非静态
构造方法实际上也是静态方法


《大话设计模式》部分:
装饰模式:
①定义:动态的给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。
②透明装饰模式与半透明装饰模式:
透明装饰模式要求将对象声明为抽象类型,即Component。而不应该声明为具体构件类型或具体装饰类型。
半透明装饰模式也就是对具体构件类型是透明的,但是对具体装饰类型必须指定,是不透明的。即Component component是透明的,ComponentDecorator componentDecorator是不透明的,必须指定具体装饰类型。
③装饰模式的优缺点:
优点:可以对一个对象进行多次装饰比继承更加灵活不会导致子类的个数急剧增加(这点比较重要);
缺点:大量小的对象的产生会占用更多的系统资源在一定程度上影响程序的性能
④装饰模式适用环境:
不能采用继承的方式对系统进行扩展或者采用继承不利于系统的扩展和维护时可以采用装饰模式(例如会导致子类个数的急剧增加)。

你可能感兴趣的:(学习笔记)