问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

最后的pri2 hello2=new pri2()是怎么运行的?

package com.imooc;

public class pri2{
    int num1;
    int num2;
    static int num3;
    public pri2(){
        num1=91;
        System.out.println("通过构造方法为变量num1赋值");
        }
        {
            num2=74;
            System.out.println("通过初始化模块为num2赋值");
        }
        static{
            num3=83;
            System.out.println("通过静态初始化模块为怒目赋值");
        }
        public static void main(String[] args) {
            pri2 hello=new pri2();
            System.out.println("num1:"+hello.num1);
            System.out.println("num2:"+hello.num2);
            System.out.println("num3:"+num3);
            pri2 hello2=new pri2();
        }
    }

提问者:Chen十八 2017-04-21 22:31

个回答

  • lizaizhizhu
    2017-04-21 23:29:40
    已采纳

    pri2 hello=new pri2();
                System.out.println("num1:"+hello.num1);
                System.out.println("num2:"+hello.num2);
                System.out.println("num3:"+num3);
                pri2 hello2=new pri2();

    这些代码等同于

    pri2 hello=new pri2();

     pri2 hello2=new pri2();

                System.out.println("num1:"+hello.num1);
                System.out.println("num2:"+hello.num2);
                System.out.println("num3:"+num3);

    num3属于静态类只能被执行一次,所以执行结果缺少“”通过静态初始化块初始化  num3“         

  • Hibiko
    2017-04-21 22:54:45

    Static修饰的类成员,它的使用完全独立于该类的任何对象。Static块仅在该类被加载时执行一次。