我发现这个Java代码的Java教程页面上:我不明白这一点( “串” == “字符串”)例如
if ("progress" == evt.getPropertyName())
http://download.oracle.com/javase/tutorial/uiswing/examples/components/index.html
怎么会这样的工作?我认为我们必须在这种情况下使用equals()
方法(string.equals("bla")
)?我们在这里也可以使用equals()
吗?它会更好吗?有任何想法吗?
编辑:所以如果equals()
会更好,那么我真的不明白为什么一个严重的Oracle教程页面没有使用它?此外,我不明白为什么它的工作,因为我认为一个字符串是一个对象。如果我说object == object
,那么这是个大问题。
对你的Edit的回答,文字“progress”可能被定义为static和final,而JVM维护一个String文字的内部池,并且在编译代码中用相同的引用替换类似的字符串文字。正如其他海报所指出的那样,使用==来比较字符串文字并不被认为是一种好的做法。 –
在Oracle教程中您会发现这样的事情,这似乎很奇怪。它只是表明除了我之外,你不能相信任何人。:) – emory
+1有时候Java就像英语。 –