当前位置: 首页 > 知识库问答 >
问题:

数组-按引用调用[重复]

葛昱
2023-03-14

在将数组传递给java中的函数然后将其分配给新数组时,我得到了相同的旧数组。

public static void main(String[] args) {
        int[] arr1 = { 1, 2, 3, };
        changes(arr1);
        for (int val : arr1) {
            System.out.println(val);
        }
    }

private static void changes(int[] arr1) {
    int[] arr2 = { 7, 8, 9 };
    arr1 = arr2;
}

当传递数组处理传递对该数组的引用时,为什么会这样?

共有1个答案

司徒兴德
2023-03-14

因为您正在本地修改对arr1的引用(您不能修改调用方的引用)。改变

arr1 = arr2;

System.arraycopy(arr2, 0, arr1, 0, arr2.length);
 类似资料:
  • 问题内容: 在某些语言中,可以使用特殊的保留字(例如 ref 或 val) 通过引用或值传递参数。当您将参数传递给Python函数时,它永远不会在离开函数时更改参数的值。唯一的方法是使用 全局 保留字(或据我目前的了解)。 范例1: 会显示 显示k为不变 在此示例中,变量n从不更改 范例2: 在此示例中,变量n已更改 Python中有什么方法可以调用函数并告诉Python 该参数 是 值 还是 引

  • C++ 用三种方式向函数传递数值:按值调用(call-by-value)、用引用参数按引用调用(call-by-reference reference argument)和用指针参数按引用调用(call-by-reference pointer argument)。第3章比较了按引用调用与按值调用,本章主要介绍用指针参数按引用调用。 第3章曾介绍过,return 可以从被调用函数向调用者返回一个值

  • 问题内容: 我在Python out1,out2,out3等中有很多函数,并且想基于传入的整数来调用它们。 是否有捷径可寻? 问题答案: tl; dr:编写函数而不是,并且不要理会此hack。 我无法想象在实际情况中会出现这个问题的合理情况。请重新考虑问题的体系结构;可能会有一个更好的方法(因为将它们存储在列表中意味着除索引外,函数没有其他意义;例如,我只能想象如果要创建该函数,则可以这样做)一堆

  • 使用以下代码: 有没有办法用一条语句替换switch()块: 请使用纯Javascript-不要使用jquery或其他库。谢谢

  • 问题内容: 假设我有以下重载函数 为什么要调用带有参数签名的方法?这里重载的优先顺序是什么? 问题答案: 在这种情况下,类层次结构中较低的类将具有优先权。换句话说,更具体的类类型,在这种情况下将是因为从技术上扩展了。 如果您有以下内容 然后,当您定义如下的重载方法时: 然后调用将调用第二个方法,因为它在类层次结构中较低。

  • 问题内容: java中的按引用传递和按引用调用有什么区别? 问题答案: Java不会通过引用传递任何变量。 考虑使用Java中的引用传递对象是很诱人的,但是很有害。对象类型的变量是引用。传递时,它们按值传递。 在其他语言中,按引用传递和按引用调用是同一回事。 编辑: 现有的stackoverflow问题“Java是否通过引用传递?”中提供了更多详细信息。(剧透:没有)