gpt4 book ai didi

java - 解释以下java程序的执行流程

转载 作者:行者123 更新时间:2023-12-01 07:13:13 24 4
gpt4 key购买 nike

“谁能解释一下以下java代码的执行流程??”抱歉我的误导性陈述...我的问题是...

Main b = new Main();

控制转到A类构造函数,然后控制直接转到Main类的重写方法

public void PrintFields() {
System.out.println("x = "+x+" y = "+y);
}

为什么编译器没有给出错误,因为 x 和 y 没有创建..!!我只是对此感到困惑。

x 和 y 何时在内存中创建以及何时进行初始化?当控制到达 Main 类中的以下语句时,x 和 y 是创建的吗?

int x = 1;
int y;

代码:

class A
{
public A() {
PrintFields();
}
public void PrintFields() {}
}
class Main extends A
{
int x = 1;
int y;
public Main() {
y = -1;
PrintFields();
}
public void PrintFields() {
System.out.println("x = "+x+" y = "+y);
}
}
class Test
{
public static void main(String[] args) {
Main b = new Main();
}
}

输出:

run:
x = 0 y = 0 //why 0 0 ?
x = 1 y = -1 // why 1 -1 ?
BUILD SUCCESSFUL (total time: 0 seconds)

谢谢。

最佳答案

Main b = new Main();

控制转到A类构造函数,然后调用Main类的重写方法

public void PrintFields() {
System.out.println("x = "+x+" y = "+y);
}

此时x和y都有默认值

so x=0, y=0

现在控制权来了

int x = 1;
int y;
public Main() {
y = -1;
PrintFields();
}

然后

public void PrintFields() {
System.out.println("x = "+x+" y = "+y);
}

此时x=1且y=-1

所以输出是

x=1, y=-1

关于java - 解释以下java程序的执行流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com