static(静态)
static能够修饰方法,属性,自由块和内部类
使用static修饰这些成员,能够理解成与类相关。经过“类名.成员”的形式调用,
没有static修饰能够理解这些成员与对象相关,能够经过“对象名.成员”的形式调用
注意:static不能用来修饰构造方法java
1.static修饰方法 如:main方法
main()是java引用程序的主入口方法,在该方法前添加static修饰表示该方法与类相关,java解析运行时将会
寻找该方法,之因此将main()定义成类相关,解析器调用该方法时,尚未建立当前的对象,所以不能定义成
与对象相关的方法。
注意:static修饰方法中,不能调用没有stataic修饰的方法和属性,也不能使用this和super。this
2.static修饰属性。
静态属性具备static方法的特色外,还有一个主要的特征就是:静态属性被当前类中多个对象共享时,
一个对象修改对象的值后,会影响其余对象。
public class Test{
public static int count=0;
public Test(){
count++;
}
public static void main(String[] args){
Test t1=new Test();
system.out.println(t1.count);
Test t2 = new Test();
system.out.println(t2.count);
}spa
}
输出的结果是1和2.
上例子中,count是一个静态变量,所以t1和t2共享count.当建立t1对象时,构造方法将count加1,
当再次建立t2对象时,count在次基础上在加1。对象
3.static修饰自由块
自由块是放在{}括起来的代码段,自由块中的代码在构造方法以前执行,所以能够将一部分初始化代码放在自由块中。
当使用static修饰自由块时,自由块江变成静态自由块,一般用于初始化静态变量,静态自由块与类相关,所以只要类加载,
即便没有对象也会执行,静态自由块不管建立几个对象,仅执行一次。
public class Test{
private static int i;
static{
system.out.println("静态自由块");
i++;
}
public void show(){
system.out.println(i);
}
public static void mian(String[] args){
Test t1 = new Test();
t1.show();
Test t2 = new Test();
t2.show();
}
}
建立两个对象时,静态自由块也是执行一次。class