基本介绍
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。
时间: 2024-10-13 12:32:26