Java中初始化的顺序

Joh*_*Doe 5 java

我知道,这是一个非常基本的话题,所以如果是一个重复的问题,请提供参考.

比如,有以下代码:

public class Point {

    int x = 42;
    int y = getX();

    int getX() { 
        return x; 
    }

    public static void main (String s[]) {
        Point p = new Point();
        System.out.println(p.x + "," + p.y);
    }
} 
Run Code Online (Sandbox Code Playgroud)

它输出: 42,42

但是如果我们改变变量外观的顺序:

public class Point {

    int y = getX();
    int x = 42;

    int getX() { 
        return x; 
    }

    public static void main (String s[]) {
        Point p = new Point();
        System.out.println(p.x + "," + p.y);
    }
} 
Run Code Online (Sandbox Code Playgroud)

它输出: 42,0

我理解在第二种情况下,情况可以描述为:"好的,我不知道返回的x值是什么,但是有一些价值".我不完全理解的是,在没有看到x及其价值的情况下,可以看到x.这是编译时间和运行时间的问题吗?提前致谢.

twa*_*249 7

int在Java中创建时,它会自动初始化为0.那么第二个代码的作用是创建两个整数xy他们都设为0然后设置y的值的x0然后设置X的值42.