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)