有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

函数中的Java数组赋值

public static void mystery(int[] arr) {
    int[] tmp = new int[arr.length];
    tmp[0] = arr[arr.length-1];
    tmp[arr.length-1] = arr[0];
    arr = tmp;
}

int[] a = {2,3,4};
mystery(a);

当我运行这个程序时,我发现即使调用了神秘(a),a的值仍然是

a = {2,3,4};

Java数组是可变的,所有参数都是通过引用传递的。既然在方法中,arr指向方法之后存储在tmp中的内存,为什么a是不变的


共 (1) 个答案

  1. # 1 楼答案

    java中,将方法的参数更改为引用其他对象不会对原始参数产生任何影响。 因此,在执行mystery之后,a不指向tmp

    要完成交换mystery方法需要直接处理arr