首先运行以下代码片,得到结果32。
String[] strArray = new String[]{"1", "2"};
List<String> strList = Arrays.asList(strArray);
strArray[0] = "3";
for (String s : strList) {
System.out.print(s);
}
我初次看到这段代码片时,想当然地认为结果应该是12无疑。然而。。。现实总是残酷的。
究其原因:
Arrays.asList(strArray)返回的是Arrays.ArrayList,这个类的带参构造里面,直接把传入的数组赋给内部成员数组,因此以上代码片中的strList中的值首地址的引用,就是strArray,相当于strList = strArray,所以改了值,但是地址没变。