小编use*_*476的帖子

Java方法参数拼图

我偶然发现了Java的一个非常令人费解的功能(?).

似乎使用"new"关键字替换方法参数将该对象转移到不同的范围:

import java.util.ArrayList;

public class Puzzle {
    public static void main(String[] args) {
        ArrayList<Integer> outer = new ArrayList<Integer>();
        outer.add(17);
        Puzzle.change(outer);
        outer.add(6);
        System.out.println(outer);

        // excpected output:
        // [23]
        // [23, 6]
        //
        // actual output:
        // [23]
        // [17, 7, 6]
    }

    public static void change(ArrayList<Integer> inner) {
        inner.add(7);
        inner = new ArrayList<Integer>();
        inner.add(23);
        System.out.println(inner);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这种奇怪吗?我注意到了与分配相同的行为.

java arguments pass-by-reference

1
推荐指数
3
解决办法
984
查看次数

标签 统计

arguments ×1

java ×1

pass-by-reference ×1