V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
callmedachang
V2EX  ›  Java

一道 Java 题。。。。。。

  •  
  •   callmedachang · 2018-04-11 22:29:01 +08:00 · 3410 次点击
    这是一个创建于 2396 天前的主题,其中的信息可能已经有所发展或是发生改变。

    public class demo {

    public static demo instance = new demo(20);
    public static int i = 10;
    
    public static void main(String[] args) {
        demo d = demo.instance;
        demo d1 = new demo(20);
    }
    public demo() {
    }
    public demo(int a) {
        System.out.println(a - i);
    }
    

    }

    9 条回复    2018-05-24 17:40:08 +08:00
    mjikop1231
        1
    mjikop1231  
       2018-04-11 22:38:41 +08:00
    代码块小了。。。?
    先执行静态成员的定义 第一次调用 demo(20) ,此时 i=0
    然后执行 main 第二次调用 demo(20),此时 i=10
    所以输出是:
    ```
    20
    10
    ```
    shalk
        2
    shalk  
       2018-04-11 22:44:28 +08:00 via iPhone
    静态初始化是按顺序赋值,instance 在赋值的时候,i 还是 0。这个 0 是准备阶段给出的
    Wisteria
        3
    Wisteria  
       2018-04-11 22:50:43 +08:00 via Android
    没格式化的代码看着真像一坨😼💩
    binbinyouliiii
        4
    binbinyouliiii  
       2018-04-11 22:57:06 +08:00
    ```
    public class Demo {

    private static Demo instance = new Demo(20);
    private static int i = 10;

    public static void main(String[] args) {
    Demo demo1 = Demo.instance;
    Demo demo2 = new Demo(20);
    }

    public Demo(int a) {
    System.out.println(a - i);
    }
    }
    ```
    cs923
        5
    cs923  
       2018-04-11 23:28:44 +08:00
    测试了下,输出如下:
    20
    10
    ps:类被加载时从上到下初始化成员,int 属于基本类型未被初始化默认为 0
    WildCat
        6
    WildCat  
       2018-04-11 23:54:50 +08:00
    main method 的第一行:
    “ demo d = demo.instance;”

    即使删掉(注释掉),也会输出 20。

    跟调不调用没关系。
    pwrliang
        7
    pwrliang  
       2018-04-12 00:07:30 +08:00
    好题啊,我只知道 Class 在加载的时候会初始化 static 成员,但是不知道会按声明顺序初始化的。调换初始化顺序就变成了 10,10.
    public static int i = 10;
    public static demo instance = new demo(20);
    ng14
        8
    ng14  
       2018-05-24 17:39:19 +08:00 via Android
    20
    10
    ng14
        9
    ng14  
       2018-05-24 17:40:08 +08:00 via Android
    java 类的准备阶段
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 12:16 · PVG 20:16 · LAX 05:16 · JFK 08:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.