static 关键字

当创建类的时候,就是描述类的外观和行为,除非用new来创建类的对象,否则得不到任何对象!
有两种情况用上面的方法无法解决:
1、 只想为特定的域分配单一的存储空间,而不去考虑究竟要创建多少个对象,甚至不去创建对象。
2、没有创建对象,也能调用的方法。
使用static关键字可以解决这方面的问题。
即:static修饰的元素或域的不和包含它的类有关联,可以单独使用。
static修饰的元素或域的存储空间是唯一的,不会重复创建。
使用类名调用方式优先于使用类对象调用,因为使用类名调用,在某些情况下他还为编译器进行优化提供了更高的机会。
示例代码:

class StaticTest{ static int i = 47;}

StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

st1.i和st2.i只想同一存储空间,因此他们具有相同的值47;

class Incrementable{
static void increment(){StaticTest.i++;}}

使用ClassName.method()引用,值加一;
不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是static变量的作用域并不等同于它的生存周期,它的作用域决定于它被定义的位置。可以认为static变量的作用域<=生存周期。

注:使用static修饰只是确定他的生命周期和唯一性,没有不可更改行。而被final修饰的是不可更改的!

你可能感兴趣的:(static 关键字)