
static静态变量static修饰的变量称为静态变量静态变量属于类不属于类的实例所有实例共享一个静态变量访问、修改)publicclassMyClass{publicstaticintcount;// 静态变量}静态方法static修饰的方法称为静态方法静态方法可以直接通过类名调用无需创建类的实例。publicclassMyClass{publicstaticvoidprintMessage(){// 静态方法System.out.println(Hello, world!);}}静态代码块使用static关键字修饰的代码块称为静态代码块静态代码块在类加载时执行用于执行静态变量的初始化或者其他静态操作。publicclassMyClass{static{// 静态代码块System.out.println(Static block is executed.);}}注意点静态变量、静态方法通过类名访问(类名.静态变量、类名.静态方法)无需创建类的实例。静态方法中只能访问其他静态成员不能直接访问非静态变量和非静态方法。静态变量、静态方法属于类而不是对象因此它们在内存中只有一份拷贝所有对象共享。静态方法不能被声明为抽象方法因为静态方法属于类而不是对象。静态方法中不可以出现this关键字。使用场景:表示对象自己的行为的且方法中需要访问实例成员的则该方法必须定义成实例方法如果该方法是以执行一个共用功能为目的则可以定义成静态方法static应用知识工具类概念类中都是一些静态方法每个方法都是以完成一个共用的功能为目的这个类用来给开发人员共同使用的。好处一是调用方便二是提高了代码复用一次编写处处可用为什么工具类中的方法不用实例方法做因为实例方法需要创建对象调用此时创建对象只是为了调用方法这样只会浪费内存。工具类定义时的其他要求因为工具里面都是静态方法直接用类名即可访问所以工具类无需创建对象建议将工具类的构造器进行私有声明一个工具类src/util文件夹中新建Code.javaimportjava.util.Random;publicclassCode{publicstaticStringverification(intn){RandomrandomnewRandom();Stringcode;for(inti0;in;i){inttyperandom.nextInt(3);// 生成一个0到2之间的随机整数包含0和2switch(type){case0:// 大写字母charch(char)(random.nextInt(26)65);codech;break;case1://小写字母charch1(char)(random.nextInt(26)97);codech1;break;case2://数字coderandom.nextInt(10);break;}}returncode;}}使用这个工具类src/project文件夹中新建base.javaimportutil.Code;publicclassBase{publicstaticvoidmain(String[]args){// 使用工具类System.out.println(Code.verification(5));}}一、同个类内方法调用速记总结1.静态方法带static静态 → 调静态直接写方法名()没问题静态 → 调非静态❌不能直接调用必须new对象2.实例方法不带static实例 → 调实例直接写方法名()等价this.方法名()实例 → 调静态直接写方法名()没问题口诀静态只能找静态实例啥都能调用静态不能直接访问实例方法二、外部类访问权限补充顺带复习private仅本类内部可用外面类不能调用public任何类都能调用static调用不需要 new 对象类名.方法()