2022-07-27 第六组 李俊琦 static修饰符与代码块
今日重点
static修饰符
代码块
学习内容
static修饰符
一旦使用了static,内容将不再属于对象,而是属于类的,存储再方法区中是线程共享的,所有的对象都可以访问
static可以修饰哪些内容?
变量
被static修饰的变量被称作为静态变量 方法
被static修饰的方法被称作为静态方法 内部类
被static修饰的内部类被称作静态内部类
凡是被static修饰的内容都在方法区的静态区中,在类加载时刻初始化静态变量,并执行静态代码块,其中所有创建的常量、变量、引用对象都存放在静态区中
类的内部结构:
属性、方法、构造器、代码块、内部类
代码块:
代码块又可以称为初始化块,属于类的一个成员,它是将逻辑语句封装在方法体中。
通过{ }包裹。代码块没有方法名,没有参数,没有返回值,只有方法体。
它是不需要通过对象或类进行显式的调用,会在类加载或者创建对象时,主动地(隐式)调用。
静态代码块
一个类被加载时会被调用一次,做一些初始化的工作,具体代码如下图
只要类被加载就会被执行。
实例代码块
每次创建势力都会被调用一次,用的很少(创建对象就调用一次)
可以有多个静态块,但是开发中一般就写一个静态块。
外部类(尽量不用)
类的外边可以再声明一个类
一个public声明的类,类名必须和.java的文件名相同
外部类就是两个类
内部类
在一个类内部进行其他类结构的嵌套操作
我们之前写过的链表,Node类其实主要就是SuperLinked
我们可以把Node类定义在SuperLinked中
单例模式:
一个类只有一个实例。
别人不能new,构造器私有化,不能在类的外部通过new去实例化。
在该类内部产生一个唯一的实例对象,把它封装成static类型
定义一个静态方法返回这个唯一的对象。
饿汉式单例模式:
不管以后会不会使用到该实例化对象,先创建了再说,很着急的样子。
实现的办法就是直接new实例化。
懒汉式(延迟加载)
什么时候调用getInstance方法,什么时候new
内部类实现单例
也是懒汉式的一种,这种懒汉式没有线程的问题
结合了饿汉式和懒汉式的优点:
只要不调用getInstance方法,就不会使用内部类,
内部类一旦被使用一次只会被初始化一次,以后一直用的时INSTANCE静态常量了。