首页 > 代码库 > java中的关键字 -- static

java中的关键字 -- static

基本介绍

static关键字通常来注明一个class内的某个field或者某个方法是不依赖于对象的建立的。换句话说,无论我们是否创造了该class的一个具体的实例, static的值或者方法都可以被我们调用:

ClassName.field;
ClassName.method();

需要注意的是,由于一个值被注明了static,程序在运行时也只会为这个值安排一个特定且唯一的空间。如果多个class的实例中的一个修改了这一值,那么其他的class object都会得到同样的被修改后的值。

class Test {
    static int i= 0;
}

Test t1 = new Test();
Test t2 = new Test();

t1.i ++;
System.out.println(t2.i); // 1

所以通常我们会在这样的值上加上final关键字, 表示不可被修改。关于final的介绍会在另一篇中单独出现。

同static的变量一样,static method也可以通过class直接访问或者对象访问。

public class Test {
    static int i = 0;

    static void increment() {
        i ++;
    }
    public static void main(String[] args) {
        Test t1 = new Test();
        Test t2 = new Test();
        Test.increment();
        t2.increment();
        t1.i ++;
        System.out.println(t2.i); // 3
    }
}

 

工程实践

通常static被用作一些特定的变量,通常和final一起修饰,使得该变量实际成为一个常量被其他的class引用。

public class XXXConstants {
    public static final String XXX = "XYZ";
    public static final String YYY = "YZX";
    public static final String ZZZ = "ZXY";
}

而一些helper method也可以被标注成static,例如常见的:

Integer.parseInt(String intString);

也可以自己定制不依赖于具体的实例的static method。

 

java中的关键字 -- static