【java】【面对对象高级1】static

目录

1、static修饰成员变量

 1.1 修饰成员变量

 1.2 成员变量的执行原理

2、static修饰成员变量的应用场景

3、static修饰成员方法

3.1 修饰成员方法

 3.2 成员方法的执行原理

4、static修饰成员方法的应用场景

 4.1 MyUtil工具类

 4.2 main

5、static的注意事项

5.1 类方法中可以直接访问类的成员,不可以直接访问实例成员

 5.2 类方法中既可以直接访问类的成员,也可以直接访问实例成员

 5.3 实例方法中可以出现this关键字,但类方法不可出现

6、static的应用知识:代码块

6.1 静态代码块

6.2 实例代码块

7、static的应用知识:单例设计模式

 7.1 饿汉式单例

 7.1.1 A

7.1.2 TestA

7.3 单例模式的应用场景和好处

7.4 懒汉式单例 

 7.4.1 B

7.4.2 TestB


前言:面对对象的高级,多关注语法的基本使用;多思考、练习、记忆;要自信,后面用起来就会了。

1、static修饰成员变量

【java】【面对对象高级1】static_第1张图片

 【java】【面对对象高级1】static_第2张图片

 1.1 修饰成员变量

 【java】【面对对象高级1】static_第3张图片

 

 

 1.2 成员变量的执行原理

【java】【面对对象高级1】static_第4张图片

 

2、static修饰成员变量的应用场景

【java】【面对对象高级1】static_第5张图片

 【java】【面对对象高级1】static_第6张图片

【java】【面对对象高级1】static_第7张图片

 

 

3、static修饰成员方法

【java】【面对对象高级1】static_第8张图片

 

3.1 修饰成员方法

【java】【面对对象高级1】static_第9张图片

 【java】【面对对象高级1】static_第10张图片

 3.2 成员方法的执行原理

【java】【面对对象高级1】static_第11张图片

 

4、static修饰成员方法的应用场景

【java】【面对对象高级1】static_第12张图片

 4.1 MyUtil工具类

package com.runa.staticdemo;

import java.util.Random;

public class MyUtil {
    // 构造器私有,
    private MyUtil() {
    }

    public static String CreateCode(int n) {
        //2 定义2个变量,一个是记住最终产生的随机验证码 一个是记住可能用到的全部字符
        String code = "";
        String data = "abcedfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        Random r = new Random();
        // 3 定义一个循环产生每位的随机字符
        for (int i = 0; i < n; i++) {
            // 4 随机的一个字范围内的索引
            int index = r.nextInt(data.length());
            // 5  根据所有区全部字符data中提取字符
            code += data.charAt(index);


        }
        // 6 返回字符
        return code;
    }
}

 4.2 main

package com.runa.staticdemo;

public class Test {
    public static void main(String[] args) {
        System.out.println(MyUtil.CreateCode(4));
    }
}

【java】【面对对象高级1】static_第13张图片

 

5、static的注意事项

【java】【面对对象高级1】static_第14张图片

5.1 类方法中可以直接访问类的成员,不可以直接访问实例成员

 【java】【面对对象高级1】static_第15张图片

 5.2 类方法中既可以直接访问类的成员,也可以直接访问实例成员

【java】【面对对象高级1】static_第16张图片

 5.3 实例方法中可以出现this关键字,但类方法不可出现

 【java】【面对对象高级1】static_第17张图片

 【java】【面对对象高级1】static_第18张图片

 

 

6、static的应用知识:代码块

【java】【面对对象高级1】static_第19张图片

 

6.1 静态代码块

【java】【面对对象高级1】static_第20张图片

 【java】【面对对象高级1】static_第21张图片

 

 ​​​​​​​​​​​​​​【java】【面对对象高级1】static_第22张图片

 

运行结果:

 

 ​​​​​​​​​​​​​​【java】【面对对象高级1】static_第23张图片

 

  

6.2 实例代码块

【java】【面对对象高级1】static_第24张图片

 

 【java】【面对对象高级1】static_第25张图片

 【java】【面对对象高级1】static_第26张图片

 

7、static的应用知识:单例设计模式

【java】【面对对象高级1】static_第27张图片

 【java】【面对对象高级1】static_第28张图片

 7.1 饿汉式单例

 7.1.1 A

package com.runa.staticdemo;

public class A {
    // 2定义一个类变量记住类的一个对象
    private static A a = new A();

    // 1 构造器私有
    private A() {
    }

    // 3 定义一个类方法返回类的对象
    public static A getObject(){
        return a;
    }
}

7.1.2 TestA

package com.runa.staticdemo;

public class TestA {
    public static void main(String[] args) {
        A a1 = A.getObject();
        A a2 = A.getObject();
        System.out.println(a1);
        System.out.println(a2);
    }
}

 

 

7.3 单例模式的应用场景和好处

【java】【面对对象高级1】static_第29张图片

【java】【面对对象高级1】static_第30张图片

 

 【java】【面对对象高级1】static_第31张图片

7.4 懒汉式单例 

【java】【面对对象高级1】static_第32张图片

 7.4.1 B

package com.runa.staticdemo;

public class B {
    // 2定义一个类变量,用于存储这个类的一个对象
    private static B b;

    // 1 构造器私有
    private B() {
    }

    // 3 定义一个类方法,这个方法要保证第一次调研时才创建一个对象,后面调用时都会用着同一个对象返回
    public static B getInstance(){
        if(b == null){
          b = new B();
        }
        return b;
    }
}

7.4.2 TestB

package com.runa.staticdemo;

public class TestB {
    public static void main(String[] args) {
        B b1 = B.getInstance();// 第一次调用
        B b2 = B.getInstance();// 第二次调用
        System.out.println(b1);
        System.out.println(b2);
    }
}

 

你可能感兴趣的:(java,java,开发语言)