gpt4 book ai didi

java - 为什么输出不一样?

转载 作者:行者123 更新时间:2023-12-01 06:59:36 25 4
gpt4 key购买 nike

第一个 System.out.println() 的输出与第二个 System.out.println()
可能是什么原因?

public class swapex{
public static int var1, var2;

public void badSwap(int var1, int var2){
int temp = var1;
this.var1 = var2;
this.var2 = temp;
System.out.println("var1 " + var1 + " var2 "+ var2);
}

public static void main(String args[])
{
swapex sw= new swapex();
sw.badSwap(10,20);
System.out.println("var1 " + var1 + " var2 "+ var2);
}
}

最佳答案

第一个是输出参数值,第二个是输出静态字段。

让我们看看相关值的所有含义。

public void badSwap(int var1, int var2){

var1var2 是传递给该方法的参数。

int temp = var1;

temp 设置为传入的 var1。

this.var1 = var2;

静态字段var1设置为传入的var2。这是一种糟糕的风格,因为它会造成不必要的困惑。如果您有理由使用静态,请编写 swapex.var1

this.var2 = temp;

再次设置静态字段。

System.out.println("var1 " + var1 + " var2 "+ var2);

正在打印本地人。

回到主线,行:

System.out.println("var1 " + var1 + " var2 "+ var2);

解析为静态字段,因为没有具有这些名称的堆栈变量。再说一次,这也是一种糟糕的风格。您将使用 swapex.var1swapex.var2

因此,它们打印不同的原因是您首先打印原始未交换的参数,然后打印交换的(与参数相反)静态字段。

关于java - 为什么输出不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582791/

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