我刚刚阅读了这个网站,上面写道:
我没有检查
也许他们过于简化了,但我认为暗示
虽然string是一个引用类型,但等号操作符(==和!=)被定义为比较string对象的值,而不是引用...a和b不指向同一个字符串实例
(http://msdn.microsoft.com/en-us/library/362314fe.aspx)。我没有检查
String
类的内部情况,但那个说法正确吗?据我所知,String
是不可变的原因是由于字符串池。换句话说,每个唯一值只存储一个字符串副本。所有具有相同值的String
变量引用同一个对象。我认为这就是为什么"a" == "a"
可以工作--不是因为它被定义为比较值
。如果它正在检查值,则必须逐个字符比较字符串,这会导致显着的性能问题,并消除使用字符串池的主要原因之一。也许他们过于简化了,但我认为暗示
String
等式运算符与其他引用类型定义不同是误导人的。如果我错了,请纠正我!