static(静态)
static可以修饰方法,属性,自由块和内部类
使用static修饰这些成员,可以理解成与类相关。通过“类名.成员”的形式调用,
没有static修饰可以理解这些成员与对象相关,可以通过“对象名.成员”的形式调用
注意:static不能用来修饰构造方法

1.static修饰方法 如:main方法
main()是java引用程序的主入口方法,在该方法前添加static修饰表示该方法与类相关,java解析运行时将会
寻找该方法,之所以将main()定义成类相关,解析器调用该方法时,还没有创建当前的对象,因此不能定义成
与对象相关的方法。
注意:static修饰方法中,不能调用没有stataic修饰的方法和属性,也不能使用this和super。

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);
	}}


输出的结果是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();
}

}


创建两个对象时,静态自由块也是执行一次。