static关键字

static是静态的意思,可以修饰成员变量,表示该成员变量只在内存中存储一份,可以被共享访问,修改。

static修饰变量

  1. //定义静态成员变量
  2. public static int 变量名;
  3. /*
  4. 1、调用静态成员变量
  5. */
  6. //调用静态成员变量(类名.静态成员变量名)
  7. User.OnlineNumber++;
  8. //另一种调用方式,在同一个类中,调用静态成员变量可以不加类名
  9. System.out.println(OnlineNumber);
  1. package com.osskey.staticdemo;
  2. public class User {
  3. //定义静态成员变量
  4. public static int OnlineNumber = 100;
  5. //定义实例成员变量
  6. private String name;
  7. private int age;
  8. public static void main(String[] args) {
  9. /*
  10. 1、调用静态成员变量
  11. */
  12. //调用静态成员变量(类名.静态成员变量名)
  13. User.OnlineNumber++;
  14. //另一种调用方式,在同一个类中,调用静态成员变量可以不加类名
  15. System.out.println(OnlineNumber);
  16. /*
  17. 2、调用实例成员变量
  18. */
  19. //System.out.println(name);
  20. User u1 = new User();
  21. u1.age = 20;
  22. u1.name = "张三";
  23. System.out.println(u1.name);
  24. }
  25. }

static修饰方法(一次编写,处处可用)

  • 什么时候用静态成员方法?

如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可作为静态成员方法

static实际应用案例:使用静态方法定义工具类

使用工具类生成一个5位随意验证码工具类
注意:工具类内,一般将构造器私有,目的是禁止其他方法利用工具类创建对象,原因是工具类不需要创建对象,只需要提供内部静态方法作为工具使用

  1. package com.osskey.staticdemo.static_tools;
  2. public class tools {
  3. public static void main(String[] args) {
  4. //静态方法调用,类名.方法名
  5. VerifyTool.CreateCode();
  6. }
  7. }
  1. package com.osskey.staticdemo.static_tools;
  2. import java.util.Random;
  3. public class VerifyTool {
  4. /*
  5. 工具类私有
  6. */
  7. private VerifyTool() {
  8. //将工具类私有,禁止创建对象
  9. }
  10. public static void CreateCode(){
  11. //开发一个验证码
  12. //1、定义一个String对象,存放所有可能存在的验证码
  13. String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  14. String code = "";
  15. Random random = new Random();
  16. for (int i = 0; i < 5; i++) {
  17. int index = random.nextInt(chars.length());
  18. code += chars.charAt(index);
  19. }
  20. System.out.println("验证码为:"+code);
  21. }
  22. }

static访问需要注意的点

  1. 静态方法只能访问静态成员变量,不可以直接实例成员变量,因为实例成员变量是属于对象的,只能创建对象访问实例成员变量
  2. 实例方法可以访问静态成员变量,也可以访问实例成员变量
  3. 静态方法不能出现this关键字

static应用:代码块

代码块是类的五大成分之一(成员变量,构造器,方法,代码块,内部类),定义在类中方法外。在JAVA类中,用{}括起来的代码,叫做代码块

代码块分类:
1、静态代码块

  • 格式:static{}
  • 作用:通过static关键字进行修着类的加载而加载,并且自动触发只执行一次
  • 使用场景:在类加载时做一些数据的静态初始化,方便后续使用

2、动态代码块(每次创建对象时,都会执行动态代码块的内容,再执行构造器内容)

  • 格式:{}
  • 特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行
  • 作用:初始化实例资源

statci应用:单例设计模式

  • 什么是设计模式?

设计模式是一套被前人反复使用,多人知晓,经过分类编目的代码设计经验总结,后来者可以直接拿来解决问题。

  • 什么是单例设计模式

可以保证系统中,应用该模式的这个类永远只有一个实例,简单来说:一个类永远只能创建一个对象。

  • 单例模式的场景和作用

例如任务管理器对象我们只需要一个就够了,就可以解决问题了。单例模式可以节约内存。