重温Java基础(四)

1.代码块

  • 代码块中定义的变量是局部变量。
  • 初始化代码块是放在构造函数中执行的,定义在类中的。
  • 局部代码块是定义在方法中的。

1.1.静态代码块

  • 在加载字节码的时候就执行了
  • 在主方法之前执行的,只执行一次。

2.组合关系  class Person { Dog pet ; }  当第一次使用的时候加载到JVM当中,只加载一次,之后从内存中直接使用。

3.类的加载:当第一次创建该类对象的时候,加载到内存中。在加载的时候,会执行static

3.1.字段初始化问题

  • 静态字段初始化,是在静态代码块中初始化
  • 非静态字段初始化,是在构造器中初始化
  • 子类构造器默认会调用父类的构造器。

4.final关键字,继承的弊端,破坏了我们的封装,子类可以访问父类的实现细节,,可以覆盖父类中的方法,如何避免这种情况?

  • final可以修饰字段,必须手动初始化值。 final修饰一个变量,就代表一个常量。规则是,字段大写MAX_VALUE
  • final修饰方法的时候,方法不能被覆盖。
  • final修饰类的时候,该类不能被继承。
  • final修饰基本数据类型的时候,代表值不能修改,当final修饰引用数据类型的时候,代表地址不能被修改。

5.设计模式

5.1.单例模式,一个类在内存当中只有一个对象,别人不能再创建对象。

  • 饿汉模式  代码实现   (饿汉模式的单例不能被继承)
  1. 必须要在该类中创建一个对象出来。
  2. 私有化自己的构造器防止外界通过构造器来创建新的对象。
  3. 给外界提供一个方法,能够获取已经创建好的对象。
  • 单例模式的好处
  1. 控制自资源的使用
  2. 控制实例的产生数量,节省资源
  3. 作为通信媒介,数据可以共享,变量值可以共享。

5.2 如何设计工具类

  • 一般都设计成static的方法,通过类名去调用
  • 如果一个工具类没有使用static,那么我们一般把工具类设计成单例,通过单例获取对象调用工具类方法
  • 如果工具类全部使用static修饰,此时必须把工具类的构造器私有化,防止创建对象调用静态方法。(有什么区别)

6.包装类:对基本数据类型进行包装,把基本数据类型包装成一个对象

  • 把基本数据类型变成包装类就是装箱操作。自动装箱,就是把一个基本数据类型的值赋值给包装类。
  • 把包装类转换成基本数据类型,就是拆箱操作。自动拆箱,就是一个包装类赋值给基本数据类型。
  • new Boolean("true"),除了true,其他全部是false。

6.1 基本数据类型和包装类的区别

  • 初始值不同,一个是0,一个是null
  • 包装类提供了很多方法可以直接使用
  • 集合框架不允许存放基本数据类型,只能存放对象

6.2什么时候使用基本数据类型,什么时候使用包装类

  • 类中的成员变量一般使用包装类
  • 方法中,一般使用基本数据类型,基本数据类型存放再栈中,包装类型存放再堆中6

6.3 包装类的缓存设计 Integer.valueof();Integer的缓存范围-128~127

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章