如下程序hello2是怎么被赋值的,程序运行到它的时候已经结束了啊,运行结果为什么会有最后两行?

来源:8-10 Java 中的 static 使用之静态初始化块

格心派

2016-02-28 00:45

http://img.mukewang.com/56d1d2060001057a03310223.jpg

第一张是运行结果,第二张截图是代码,就是不明白运行结果的最后两行代码?我觉得运行结果不应该有最后两行.....

  • 56d1d08000017e3f05000412.jpg

写回答 关注

2回答

  • miaoqichao
    2016-02-28 01:19:32
    已采纳

    HelloWorld类里面有三个变量,num1,num2,num3,其中num3是静态变量

    在初始化模块里面有num2和num3的赋值并且输出,但是因为num3是静态变量,所以先初始化num3

    在main中新建HelloWorld对象的时候,就会初始化静态变量和成员变量,再调用构造方法

    所以输出是 num3,num2,num1(构造方法输出的)

    然后就三行System.out.println的对象变量的调用,输出对应的值

    HelloWorld hello2 =new HelloWorld();

    这里又创建了一个对象,hello2,因为静态变量只有第一次调用的时候会初始化,第二次以后不会

    所以输出 num2,num1。

    可能是你没有注意到new了一个hello2


    吾怯二日

    谁叫奇妙

    2016-02-29 17:51:40

    共 2 条回复 >

  • 慕移动9181930
    2022-03-25 00:48:33

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530643 学习 · 6091 问题

查看课程

相似问题