java核心卷Ⅰ第十版笔记4
第四章
- 不要编写返回引用可变对象的访问器方法。由于会破坏封装性。若是须要返回一个可变对象的引用, 应该首先对它进行克隆(clone )。对象 clone 是指存放在另外一个位置上的对象副本。
- final 修饰符大都应用于基本类型域,或不可变类的域(若是类中的每一个方法都不会改变其对象,这种类就是不可变的类。例如,String类就是一个不可变的类)。对于可变的类,使用 final修饰符可能会对读者形成混乱。例如:
private final StringBuiIder evaluations;
在构造器中会初始化为evaluations = new StringBuilder();
final 关键字只是表示存储在 evaluations 变量中的对象引用不会再指示其余StringBuilder对象。不过这个对象能够更改:`public void giveGoldStarO{evaluations.append(LocalDate.now() + ": Gold star!n"); }
- System 类有一个 setOut 方法, 它能够将 System.out 设置为不一样的流。为何这个方法能够修改 final 变量的值。缘由在于,setOut 方法是一个native方法,是用C/C++语言实现的,而且被编译成了DLL,由java去调用 而不是用 Java 语言实现的。实际上java就是在不一样的平台上调用不一样的native方法实现对操做系统的访问的。native的意思就是通知操做系统, 这个函数你必须给我实现,由于我要使用。 因此native关键字的函数都是操做系统实现的, java只能调用。这是一种特殊的方法, 在本身编写程序时, 不该该这样处理。
- 在下面两种状况下使用静态方法:一:方法不须要访问对象状态,其所需参数都是经过显式参数提供(Math.pow) 二:一个方法只须要访问类的静态域(例如:Employee.getNextldh
- Java 程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。总结一下Java中方法参数的使用状况:一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。一个方法能够改变一个对象参数的状态。 一个方法不能让对象参数引用一个新的对象。
- 能够为任何一个类添加 finalize 方法。finalize 方法将在垃圾回收器清除对象以前调用。在实际应用中,不要依赖于使用 finalize 方法回收任何短缺的资源, 这是由于很难知道这个方法何时才可以调用。
- 类设计技巧:1. 必定要保证数据私有 2. 必定要对数据初始化 3. 不要在类中使用过多的基本类型 4. 不是全部的域都须要独立的域访问器和域更改器 5.将职责过多的类进行分解 6. 类名和方法名要可以体现它们的职责 7.优先使用不可变的类,若是多个线程试图同时更新一个对象,就会发生并发更改。其结果是不可预料的。若是类是不可变的,就能够安全地在多个线程间共享其对象。
-


由三张图可知,加载顺序为父类静态变量-静态代码块-子类静态变量-静态代码块-父类代码块-父类构造方法-子类代码块-子类构造方法。
欢迎关注本站公众号,获取更多信息