public class MainClass {
static final int i = GetI();
static int j = 9;
public static void main(String[] args) {
System.out.println("i value : " + i);
}
static int GetI() {
return j;
}
}
以上代码打印'i值:0'
但是,该方法应返回j的值9,因此i的值为9
2.如果我们将变量j作为final,则输出将为'i value:9',这很好。
可能是什么原因?
感谢。
答案 0 :(得分:1)
在变量i初始化后,您已声明变量j 。在main方法中,您正在访问正在调用GetI()方法的 i 。 GetI()方法返回 j ,直到j没有被初始化。你也没有因为访问j而得到错误,因为它被声明为静态变量,它的范围是类lebel。输出为 - 0,因为int的默认值为0,如果未初始化则使用该值。 尝试 - 在 i 之前声明变量 j ,然后输出您想要的9。这样做,将在以后使用之前初始化变量j。 希望这有帮助。