《Effective Java》笔记
第一章 引言
(By wind5shy:http://blog.csdn.net/wind5shy)
第二章 创建和销毁对象
(By wind5shy:http://blog.csdn.net/wind5shy)
第1条:考虑用静态工厂方法代替构造函数
好处:
静态工厂方法有名字,表达更清楚。
不需创建新的对象。
可以返回原返回类型的子类型对象。应用:1.返回类型定义为接口,则返回的所有实例对象的细节都可以被隐藏,如Collections。2.返回对象所属的类在写该静态方法时可以不存在。
缺点:
类如果不含public或者protected构造函数,就不能被子类化,如不能实例化Collections的任一实现类。
与其他静态方法没有区别,不像构造函数一样明显。但使用标准的命名习惯:valueOf和getInstance,可以客服一定的缺点。
第2条:使用私有构造函数强化singleton属性
将构造函数设为private是为了避免其他类调用已确保唯一性(不写显示构造函数则系统提供默认构造函数且为public!)。
两种实现singleton的方法:
1.
public static final Singleton INSTANCE = new Singleton();
private Singleton(){}
构造方法只在初始化INSTANCE时被调用一次。
2.
private static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public static getInstance(){ return INSTANCE};
1好处在于类成员明确表明了类是一个singleton;而2则提供了灵活性,允许在不改变API的情况下改变类是否为singleton。
singleton类在序列化的时候需要提供readResolve()确保singleton性,否则一个序列化的实例在每次反序列化的时候,都会导致创建一个新的实例。
private Object readResolve() throws ObjectStreamException{ return INSTANCE;}
第3条:通过私有构造函数强化不可实例化的能力
缺点:类不能被子类化,因为子类的构造函数需要调用超类的构造函数。
第4条:避免创建重复的对象
String s = “s”;优于String s = new String(“s”);因为后者每次都创建新的对象而前者不是。
同时提供静态工厂函数和构造函数的非可变类,使用静态工厂函数可以避免每次创建新的对象,如Boolean.valueOf(String)优于Boolean(String)。
不会被修改的可变类
&nbs
相关文档:
String转Character数组,用Character的isDigit和isLetter函数去判断。
public static boolean isNumeric(String str) {
for (int i = str.length(); i = 0;) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
public static boolean isNumeric(String str) {
Pattern patt ......
public class Foo {
static void operate(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
}
public static void main(String args[]){
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
& ......
事务处理总结
来源:http://space.itpub.net/13956325/viewspace-598381
一、什么是Java 事务
通常的观念认为,事务仅与数据库 相关。
事 务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。事务的原子性表示事务 ......