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静态常量了。

posted @ 2022-08-05 16:04  闹市闲人甲  阅读(15)  评论(0编辑  收藏  举报