gpt4 book ai didi

java - 方法调用输出困惑

转载 作者:行者123 更新时间:2023-12-02 06:47:08 24 4
gpt4 key购买 nike

我对输出感到困惑(即在 Mno 类中的 showValue 方法之后)

class Lab2 {
public static void main(String[] aa) {
int ab=98;
System.out.println("ab in main before\t:"+ab);
Mno ref = new Mno();
ref.showValue(ab);

System.out.println("ab in Main After\t:"+ab);
}
}

class Mno {
void showValue(int ab) {
System.out.println("ab in showvalue before\t:"+ab);
if (ab!=0)
showValue(ab/10);
System.out.println("ab in showvalue After\t:"+ab);
}
}

我得到以下输出...它如何在 0,9,98 之后打印显示值...?

F:\Train\oops>java Lab2
ab in main before :98
ab in showvalue before :98
ab in showvalue before :9
ab in showvalue before :0
ab in showvalue After :0
ab in showvalue After :9
ab in showvalue After :98
ab in Main After :98

最佳答案

在 Java 中,方法调用期间仅传递变量的副本。

对于基元,它是值的副本,对于对象,它是对象引用的副本。

因此,当您将副本传递给 showValue 方法时,main 方法中 int ab 的值不会改变。

关于java - 方法调用输出困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523858/

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