为什么打印输出不为空?

kev*_*vin -2 java null list arraylist

为什么会这样?

List<String> list = new ArrayList<String>();
list.add("aaa");
String s = list.get(0);
list.remove(0);
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

控制台说: aaa

有人可以帮我解释一下吗?我认为控制台应该是null,它应该是吗?

Mic*_*rek 5

不,因为您将列表中的值存储在s.所以对"aaa"列表的引用是在列表中,并且s在从列表中删除之后s仍然引用它.