欢迎光临散文网 会员登陆 & 注册

DEVLOG 10.27 ArrayList#removeAll遇到的小问题

2021-10-27 18:58 作者:房顶上的铝皮水塔  | 我要投稿

参考内容:

字符串常量池详解:

cnblogs.com/Andya/p/14067618.html

Java中的String常量池

Java在栈上保存变量,在对象声明实例,将对象名指向堆中创建的对象实例。Java在堆上同时还有字符串常量池。

这句话会完成以下操作:

  1. 在String常量池中寻找是否存在"123"这个字符串,如果没有的话则创建

  2. 在堆上创建一个String类型的变量,其中的内容是123字符串

  3. 将变量名称a指向创建好的String变量

一个经典的例子:


答案是:

遇到的一个小问题:

结果是空。这是因为ArrayList#removeAll主要是进行两个操作:

  1. 遍历调用的List的每个元素

  2. 如果contains返回True

在ArrayList中contains比较的是具体的类的equals的实现。在String中equals比较就是内容相同:

因此这里并不是因为String字符串常量池造成的引用相同的问题。



DEVLOG 10.27 ArrayList#removeAll遇到的小问题的评论 (共 条)

分享到微博请遵守国家法律