58的一道面试题
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1,2));
add(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public static void add(List<Integer> list){
list.add(3);
list = new ArrayList<>(Arrays.asList(4));
}
}
1
2
3
Process finished with exit code 0
考点就是
形参--实参,值传递还是引用传递的问题。
初始化:main(list) ----> 内存地址1 (1,2)
add方法的add操作: add(list) -----> 内存地址1(1,2,3)
main(list) ------> 内存地址1 (1,2,3)
add方法的重赋值操作: add(list) ------> 内存地址2 (4)
main(list) ------> 内存地址1 (1,2,3)
遍历操作: main(list) ------> 内存地址1 (1,2,3)