static

thingKing in java : 希望某个方法不与包含它的类的任何方法关联在一起。两个术语:类数据类方法。他们作为整个类,而不是类的某个特定对象而存在的。

   有四种用法:

   1)static变量

   2)static方法

   3)static块

   4)static导入包

  1)static变量:

public class StaticTest {
    static int x = 1;

    public StaticTest() {
        this.x = 2;
    }

    public void setValue(int i) {
        this.x = i;
    }

    public int getValue() {
        return this.x;
    }

    public static void main(String[] args) {
        System.out.println(StaticTest.x);
        StaticTest test1 = new StaticTest();
        StaticTest test2 = new StaticTest();

        test1.setValue(3);
        test2.setValue(4);
        System.out.println(test1.getValue());
        System.out.println(test2.getValue());
    }

}

输出:1,4,4

解释:StaticTest.x只有一份空间。test1.x和test2.x指向同一存储空间。

  2)static方法

   thinking in java:static方法一个重要用法就是在不创建任何对象的情况下,可以调用它。这一点对定义main()方法很重要,是一个应用时的入口点。

public class StaticTest {
    public static void staticMethod() {
        System.out.println("static method test");
    }

    public static void main(String[] args) {
        StaticTest.staticMethod();
    }

}

output: static method test

 3)static块:

public class StaticTest {
    static {
        System.out.println("static block");
    }
    public static void staticMethod() {
        System.out.println("static method test");
    }

    public static void main(String[] args) {
//        StaticTest test = new StaticTest();
        StaticTest.staticMethod();
    }

}

以下情况会输出static块的内容:1,new对象;2,调用static方法;3extends父类,父类的static block会输出。

 4)static导入包

    import static .....   比较少用。

参考:https://www.cnblogs.com/dolphin0520/p/3799052.html,https://www.cnblogs.com/dotgua/p/6354151.html?utm_source=itdadao&utm_medium=referral

原文地址:https://www.cnblogs.com/luoa/p/10539280.html