gpt4 book ai didi

java - Java中的参数传递

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:09 27 4
gpt4 key购买 nike

我知道 Java 总是按值传递,但我不明白为什么会这样:

public static void swap(int[] arr, int i, int j)
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static void main(String[] args)
{
int[] arr = {3, 4, 5, 6};
swap(arr, 1, 3);
// arr becomes {3, 6, 5, 4}
}

这行不通:

public static void swap(int[] arr, int[] arr2)
{
int[] tmp = arr;
arr = arr2;
arr2 = tmp;
}
public static void main(String[] args)
{
int[] arr = {3, 4, 5, 6};
int[] arr2 = {1, 2, 5, 6};
swap(arr, arr2);
}

为什么?

最佳答案

在第二种方法中,您尝试交换引用,这不会起作用,因为引用本身是按值传递的。

第一种方法工作正常,因为它改变了数组引用的对象(它是可变的),它没有改变引用本身。

查看 this blog post有关按值传递和按引用传递之间差异的更多详细信息。

关于java - Java中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24570360/

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