- class Test
- {
- static int i=1;
- static{
- System.out.println(i+"看看,到底是谁在前面呢");
- show2();
- }
- //static int i=1;
- public static void main(String[] args){
- Test t=new Test();
- t.show();
- }
- public void show(){
- System.out.println("测试专用!!!!静态方法调用非静态方法");
- }
- public static void show2(){
- System.out.println("静态代码块调用静态方法!!没想到在后面也是可以的");
- }
- }
复制代码
很是迷惑,到底是谁先执行呢???于是写了一段代码:
可以得到几个结论:
1)静态代码块中调用静态变量,当静态属性在其后边时,执行错误,可以看出,是这两者是按照顺序执行的
2)静态属性要在之前定义,才能在静态代码中调用
3)但是静态方法就没事了,调用时才被执行.无顺序要求。
4)并且静态方法可以通过对象调用非静态方法,但是不可以直接调用
|
|