【问题标题】:Swap two int values [duplicate]交换两个int值[重复]
【发布时间】:2019-08-11 01:40:43
【问题描述】:
public class freedom {

    public static void main(String args[]){
        int x = 10;
        int y = 20;
        System.out.println(" x is: "+x+" y is: "+y);
        swap(x,y);
        System.out.println(" x is: "+x+" y is: "+y);
    }

    public static void swap(int x, int y){
        int temp = x;
        x = y;
        y = temp;
    }
}

所以我写了一个简单的函数来交换两个值,但由于某种原因它们没有被交换。我知道我的代码逻辑是正确的,但我想知道为什么没有交换这些值。

【问题讨论】:

    标签: java


    【解决方案1】:

    您的问题是 Java(当涉及到诸如 int 之类的原始值时)是“按值传递”,而您的代码固有地假定“按引用传递”。 请参阅 https://www.javaworld.com/article/2077424/learn-java-does-java-pass-by-reference-or-pass-by-value.html 以很好地描述为什么会这样。简而言之,当函数被调用时,参数本质上被“复制”到函数中,作为与原始变量不同的新变量,尽管它们具有相同的值。因此,这些变量的内容会独立于父函数变量的内容发生变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-11
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2014-01-17
      相关资源
      最近更新 更多