Java基础 (代码块、静态结构、单例模式)

思维导图

静态结构

静态变量

用static关键字修饰的变量

静态方法

用static关键字修饰的方法

调用:类名.变量名,类名.方法名()

特点:

1、静态变量(方法)随着类的加载而加载,随着类的消失而消失

2、静态变量(方法)属于类的

3、静态方法只能访问静态方法,不能访问实例方法

4、非静态方法既可以访问非静态方法,也可以访问静态方法

5、静态方法不存在重写

6、无论是this还是super,都不可以在静态结构中使用

代码块

局部代码块

在方法中的代码块

静态代码块

语法格式:

static{

//Java语句

}

实例代码块

{

}

当一个类中同时有静态代码块,实例代码块,构造器时,执行顺序为静态代码块,实例代码块,构造块

内部类

不能有静态变量、静态方法和静态代码块

静态内部类

在类中的用static修饰的类

单例模式

实现单例模式的要求

  • 类中构造方法的访问权限必须设置为私有
  • 必须在类中创建该类的静态私有对象
  • 在类中提供一个公有的静态方法用于创建,获取静态私有对象

饿汉式

1 public class Test {
2     private Test(){};
3     private static final Test test = new Test();
4     public static Test getInstance(){
5         return  test;
6     }
7 }

类加载时便实例化一个静态对象

 

懒汉式

 1 public class Test3 {
 2     private static Test3 test3;
 3 
 4    private Test3() {
 5 
 6     }
 7     public static Test3 getInstance(){
 8        if (test3 == null){
 9            test3 = new Test3();
10        }
11        return test3;
12     }
13 }

在多线程中无法保证单例的存在

 

内部类实现单例

public class Test4 {
    private Test4(){

    }
    public static Test4 getInstance(){
        return inner.TEST_4;
    }
    private static class inner{
        private static final Test4 TEST_4=new Test4();
    }
}

综合了饿汉式和懒汉式,多线程也可保证单例

posted on 2022-07-27 22:09  轮回dawd  阅读(33)  评论(1)    收藏  举报