目录
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修饰成员变量
1.1 修饰成员变量
1.2 成员变量的执行原理
2、static修饰成员变量的应用场景
3、static修饰成员方法
3.1 修饰成员方法
3.2 成员方法的执行原理
4、static修饰成员方法的应用场景
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));
}
}
5、static的注意事项
5.1 类方法中可以直接访问类的成员,不可以直接访问实例成员
5.2 类方法中既可以直接访问类的成员,也可以直接访问实例成员
5.3 实例方法中可以出现this关键字,但类方法不可出现
6、static的应用知识:代码块
6.1 静态代码块
运行结果:
6.2 实例代码块
7、static的应用知识:单例设计模式
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 单例模式的应用场景和好处
7.4 懒汉式单例
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);
}
}