static修饰符可以修饰变量、常量、方法和代码块,分别称为静态变量、静态常量、静态方法和静态代码块。
1.static变量
在java中,如果希望某个变量的值能被所有的对象共享,可以将该变量声明为静态变量(也叫类变量)。静态变量在类装载时,只分配一块储存空间,所有此类的对象都可以操控此块储存空间,它为所有类实例提供共享的变量。当一个对象将该变量修改后,其他对象再使用该变量将会是改变后的数据。声明静态变量的语法如下:
[权限控制符] static 成员变量类型 成员变量名;
访问静态变量的语法如下:
类名.静态成员变量名(不同类中)
静态成员变量名(同一类中,也可以用上述方法访问)
2.static常量
在java中,使用final修饰的变量为常量,如果将final和static连用修饰一个常量,该常量就是静态常量。静态常量一般为所有对象所共有,所以,把常量声明为static的情形也很多。
声明静态常量的具体语法格式如下:
[权限控制符] static final 常量类型 常量名 = 常量值;
访问静态常量的具体语法格式如下:
类名.静态常量名(不同类中)
静态常量名(同一类中,也可以用上述方法访问)
3.static方法
在java中,被static修饰的方法称为静态方法或类方法。静态方法不能直接访问所属类的非静态成员变量和成员方法,只能访问所属类的静态成员变量和成员方法。语法如下:
[权限控制符] static 返回类型 成员方法名([参数列表]){
方法体;
}
访问静态方法的语法如下:
类名.静态方法名([实参列表])(不同类中)
静态方法名([实参列表])(同一类中,也可以用于上述方法访问)
4.static代码块
在java中,如果有些代码(如初始化数据)必须在程序启动的时候就执行,需要使用静态代码块。静态代码块在类被装载时,自动执行一次,如果一个类有多个静态代码块,将按它们在类中出现的顺序依次执行。
示例:
public class Test{
static int i = 1;
static{
System.out.println("Hello,static" );
}
static{
System.out.println("当前i的值"+ i++ );
}
public static void main(String[] args){
System.out.println("当前i的值"+ i++ );
}
}