callmedachang
V2EX  ›  Java

一道 Java 题。。。。。。

  •  
  •   callmedachang · Apr 11, 2018 · 4590 views
    This topic created in 3131 days ago, the information mentioned may be changed or developed.

    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 replies  •  2018-05-24 17:40:08 +08:00
    mjikop1231
    mjikop1231
    Apr 11, 2018
    1
    代码块小了。。。?
    先执行静态成员的定义 第一次调用 demo(20) ,此时 i=0
    然后执行 main 第二次调用 demo(20),此时 i=10
    所以输出是:
    ```
    20
    10
    ```
    shalk
    shalk
    Apr 11, 2018 via iPhone
    2
    静态初始化是按顺序赋值,instance 在赋值的时候,i 还是 0。这个 0 是准备阶段给出的
    Wisteria
    Wisteria
    Apr 11, 2018 via Android
    3
    没格式化的代码看着真像一坨😼💩
    binbinyouliiii
    binbinyouliiii
    Apr 11, 2018
    4
    ```
    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
    cs923
    Apr 11, 2018
    5
    测试了下,输出如下:
    20
    10
    ps:类被加载时从上到下初始化成员,int 属于基本类型未被初始化默认为 0
    WildCat
    WildCat
    Apr 11, 2018
    6
    main method 的第一行:
    “ demo d = demo.instance;”

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

    跟调不调用没关系。
    pwrliang
    pwrliang
    Apr 12, 2018
    7
    好题啊,我只知道 Class 在加载的时候会初始化 static 成员,但是不知道会按声明顺序初始化的。调换初始化顺序就变成了 10,10.
    public static int i = 10;
    public static demo instance = new demo(20);
    ng14
    ng14
    May 24, 2018 via Android
    8
    20
    10
    ng14
    ng14
    May 24, 2018 via Android
    9
    java 类的准备阶段
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1667 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 05:04 · PVG 13:04 · LAX 21:04 · JFK 00:04
    ♥ Do have faith in what you're doing.