创建和销毁对象

我是在抄书吗?我不是吧。

读完第一章的感觉是好多基础知识不清楚,这个E J 还不够基础啊。再读两三章看看吧。

先记录一个知识点,是不懂的时候从网上查的。

final关键词的使用,概括起来是:变量的话是被初始化后就不能更改,方法的话是不能被子类覆写,类的话是不能被继承。(详细文档在资料中记录)


1.考虑用静态工厂方法替代构造器
   能理解的好处只有2个:(1)有名字的构造器,使用起来很清楚。特别是需要多个构造器的时候,可以标识出不同的参数构造的同一类的不同形式对象。(2)不必每次调用都创建一个新对象。例子就是经常说起的Boolean.valueof()方法。

2.Singleton类的实现方法
   这是指只能被实例化一次的类,用来代表本质上是唯一的系统组件。
   (1)公有静态成员是个FINAL域。
  
   public class Elvis{
       public static final Elvis INSTANCE = new Elvis;
       private Elvis(){....}
   }
   

   (2)共有的成员是个静态工厂方法  最优方法
   
   public class Elvis{
       private final Elvis INSTANCE = new Elvis;
       private Elvis(){....}
   public static Elvis getInstance(){ return INSTANCE;}
   }
   

   (3)编写一个包含单个元素的枚举类型,不懂

3.通过私有构造器实现类不可实例化的能力。一些只包含静态方法或静态域的工具类,比如记录城市区号的工具类,不希望被实例话,可以写一个构造器,前边加上private.

4.避免创建不必要的对象
   还是一个被多次提到的例子:尽量不要用 String a = new String("aoa");这种语句。还有Boolean.valueof()方法。除此之外,还有可以重用那些已知不会被修改的可变对象。例如:
Class person {
  private final Date birthday;
  public boolean isOlder(){
    Calendar getCal = Canlendar.getInstance(TimeZone.getTimeZone("GMT")); 
    getCal.set(1946,Calendar.JANUARY,1,0,0,0);
   Date date = getCal.getTime();
   return birthday.compareTo(date);
  }
}

每次调用isOlder都生成几个对象。
Class person {
  private final Date birthday;
  private static final Date HAHA;
  static{
    Calendar getCal = Canlendar.getInstance(TimeZone.getTimeZone("GMT")); 
    getCal.set(1946,Calendar.JANUARY,1,0,0,0);
   HAHA = getCal.getTime();
  }
  public boolean isOlder(){

   return birthday.compareTo(HAHA);
  }
}



第一章其他条没理解多少。

你可能感兴趣的:(J#)