1.static
1.1static静态块:
在你类加载的时候就运行了。
1.2.静态变量:
在你类加载的时候就开始声明或者定义了,并且存在于整个程序中,你可以再任何时刻对该值进行修改。
1.3.静态方法:
直接类名点静态方法就可以使用。
2.构造函数
在你定义类对象的时候,不是声明,是定义,也就是 A a=new A();而不是A a;
3.主方法
方法很多人疑惑主方法也有static修饰,那么它在什么时候运行呢。其实他就在你运行该类主方法的时候才运行,就是在编译器点run。其他时候都不运行!
三者的运行顺序是。static静态块先运行,随后才运行构造方法!运行主方法的话,也是先运行static代码块,再运行主方法。如下代码!
public class StaticTest { @Test public void staticTest(){ A a=new A(); } } class A{
public A() {
System.out.println("C");} static{ System. out.println( "A") ; } public static void main(String[] args){ System. out.println( "main") ; } static{ System. out.println( "B") ; } } 如果你运行测试方法 staticTest();方法,定义一个类A对象,会先运行两个静态块,再运行构造函数A(),所以结果为
A
B
C
如你运行主方法A类中的main(),会先运行A类的静态块,再运行main(),结果如下
A
B
main
假如,你声明了一个对象,而没有定义,也就是没有初始化:例如
A a; 你声明了一个类对象a,但是没有初始化,所以不会去加载类A,也就不会运行类A的静态块和构造方法!
静态块和静态变量从头到尾只初始化一次,而静态方法你调用几次用几次!