DEVLOG 10.27 ArrayList#removeAll遇到的小问题
参考内容:
字符串常量池详解:
cnblogs.com/Andya/p/14067618.html
Java中的String常量池
Java在栈上保存变量,在对象声明实例,将对象名指向堆中创建的对象实例。Java在堆上同时还有字符串常量池。
这句话会完成以下操作:
在String常量池中寻找是否存在"123"这个字符串,如果没有的话则创建
在堆上创建一个String类型的变量,其中的内容是123字符串
将变量名称a指向创建好的String变量
一个经典的例子:
答案是:

遇到的一个小问题:
结果是空。这是因为ArrayList#removeAll主要是进行两个操作:
遍历调用的List的每个元素
如果contains返回True
在ArrayList中contains比较的是具体的类的equals的实现。在String中equals比较就是内容相同:
因此这里并不是因为String字符串常量池造成的引用相同的问题。
