今日学习内容:
1.代码块:
代码块又称初始化块,属于类的一个成员,它是将逻辑语句封装在方法体中
通过{}包裹,代码快没有方法名,没有参数,没有返回值,只有方法体
它是不需要通过对象或类进行显示的调用,它会在类加载或创建对象时主动的隐式调用
2.两种代码块:
1..静态代码块:
一个类被加载时会被调用一次,做一些初始化的工作
2.实例代码块:
每次创建实例(对象),都会被调用一次,(用的很少)
3.static内存解析:
1.静态的变量或者静态方法存在于方法区的。静态的结构不会被垃圾回收
2. 不属于某一个实例对象只存在于方法区。调用静态结构,直接用类名.的方式就可以
4.实例方法和静态方法互相调用:
1.静态方法中可以直接调用实例方法?不可以
如果想用,对象.方法名
2.实例方法可以直接调用静态方法吗?可以
5.单例模式:
一个类只有一个实例。
1、别人不能new,构造器私有化,不能在类的外部通过new去实例化。
2、在该类内部产生一个唯一的实例对象,把它封装成static类型
3、定义一个静态方法返回这个唯一的对象。
6.饿汉式单例模式:
不管以后会不会使用到该实例化对象,先创建了再说,很着急的样子。
实现的办法就是直接new实例化。
7.懒汉式(延迟加载)
什么时候调用getInstance方法,什么时候new
8.内部类实现单例
也是懒汉式的一种,这种懒汉式没有线程的问题
结合了饿汉式和懒汉式的优点:
只要不调用getInstance方法,就不会使用内部类,
内部类一旦被使用一次只会被初始化一次,以后一直用的时INSTANCE静态常量了。