Strings
是不可变对象并存储在字符串池中。假设在应用程序中没有使用new
运算符创建任何字符串。在这种情况下,是否有必要使用equals
方法而不是对象相等性检查==
?String
我觉得上述问题的答案可能是肯定的,它与字符串池大小有关。字符串池是如何管理的?内存是有限的,所以我觉得字符串池也有一定的大小。它是否像LRU
缓存一样工作,当池已满时丢弃最少使用的字符串?
请提供您宝贵的意见。
我的问题不是关于字符串池的大小。我的问题是,如果没有使用 new 运算符创建任何字符串,那么使用 == 将始终是安全的。此语句是否正确,或者在这种情况下,两个具有相同字符串字符的字符串引用也可能返回 false。我知道设计方面我应该总是使用 equals 方法,但我只想知道语言规范。