企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>[success] # static * **static** 修饰`成员变量` 和 `成员方法`,修饰后属于`类` 所有,分别叫做`静态变量`,`静态方法`,**static**修饰后只随着**类的加载**准备就绪,与是否创建对象无关 * 使用上static关键字修饰的成员可以使用`引用.`的方式访问,但推荐`类名.的`方式 >[danger] ##### 案例 * **非静态成员方法**中既能访问**非静态的成员**又能访问**静态的成员**,`(成员:成员变量 + 成员方法, 静态成员被所有对象共享)` * **静态成员方法**中只能访问静态成员**不能访问非静态成员**。`(成员:成员变量 + 成员方法, 因为此时可能还没有创建对象)` ~~~ public class StaticTest { private int a; // 声明一个静态变量 private static int b; public void setA(int a) { this.a = a; } public int getA() { return a; } // 静态方法 public static int getB() { // 类. 属性 return StaticTest.b; } // 静态方法 public static void setB(int b) { // this.b = b // 报错静态方法可以直接类调用此时并没有创建对象实例因此没有this // 类. 属性 StaticTest.b = b; } public void show() { // 在非静态方法中可以通过this 调用静态属性 因为此时方法调用需要创建对象因此this存在 System.out.println(a + "," + this.b); System.out.println(a + "," + StaticTest.b); } public static void main(String[] args) { StaticTest staticTest = new StaticTest(); staticTest.setA(10); // 通过实列调用静态方法 也可调用静态属性不推荐 staticTest.setB(11); staticTest.show(); // 10,11 // 创建新的实列 StaticTest staticTest1 = new StaticTest(); staticTest1.setA(10); // 静态方法推荐类调用 StaticTest.setB(16); // 静态属性共享的此时 重新打印 都变成同一的 staticTest.show(); // 10,16 staticTest1.show(); // 10,16 } } ~~~ >[danger] ##### main -- 方法含义 * 公共的 静态的 无返回值的 叫 main 的一个方法,并且可以接受一个数组字符串作为参数,传参时候`java 文件 参数1 参数2` ~~~ public static void main(String[] args){} ~~~