Java_面向对象(二)

66 阅读3分钟

ch06 面向对象<二>

核心内容:

  • 6.1 包装类及其用法
  • 6.2 final关键字的用法
  • 6.3 abstract关键字的用法
  • 6.4 接口和抽象类的联系和区别
  • 6.5 内部类和匿名内部类
  • 6.6 Lambda表达式和函数式接口
  • 6.6 枚举的概念和作用
  • 设计模式: 模板方法模式,工厂模式,单例模式,命令模式

知识点:

  1. 为什么两个128自动装箱后就不相等?
    系统把一个-128-127之间的整数自动装箱成Integer实例,并放入cache中缓存起来。缓存是一种优秀的设计模式,把创建成本大,频繁使用的对象缓存起来,从而提高程序的运行性能。
  2. new String(“hello”)时,JVM会先使用常量池来管理"hello"直接量,再调用String类的构造器来创建一个新的String对象,新创建的String对象被保存在堆内存中,换句话说,new String(“hello”)一共创建了两个字符串对象。
  3. 创建不可变类,需遵守规则:
  • 使用private和final修饰符来修饰该类的成员变量;
  • 提供带参构造器,用于根据传入参数来初始化类里的成员变量;
  • 仅为该类的成员变量提供getter方法;
  • 如果有必要,重写Object类的hashCode()和equals()方法。
  1. 接口和抽象类的区别?
  • 相同点:都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承;都可以包含抽象方法,实现接口和继承抽象类的普通子类都必须实现这些方法。
  • 不同点:接口中只能包含抽象方法、静态方法和默认方法;接口中只能定义静态常量,不能定义普通成员变量;接口不包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作;接口里不能包含初始化块;一个类最多能继承一个直接父类,包括抽象类,但可以实现多个接口。
  1. 对象的软、弱和虚引用
  • 强引用:程序创建一个对象,并把这个对象赋给一个引用变量,程序通过该引用变量来操作实际对象。
  • 软引用:当一个对象只有软引用时,它有可能被垃圾回收机制回收。当系统内存空间足够时,它不会被系统回收,程序也可使用该对象,当系统内存空间不足时,系统有可能会回收它。
  • 弱引用:不管系统内存是否足够,总会回收该对象所占用的内存。
  • 虚引用:如果一个对象只有一个虚引用时,那么它和没有引用的效果大致相同。虚引用注意用于跟踪对象被垃圾回收的状态,虚引用不能单独使用,虚引用必须和引用队列联合使用。