可能的重复:
是什么让引用比较 (==) 对 Java 中的某些字符串起作用? https://stackoverflow.com/questions/9698260/what-makes-reference-comparison-work-for-some-strings-in-java
我知道这已经是之前问过 https://stackoverflow.com/questions/767372/java-string-equals-versus,但尽管建议使用.equals()
而不是==
比较运算符,我发现==
始终有效:
String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2); // true
谁能给我举个例子==
运营商失败?
这是因为你很幸运。这==
Java 中的运算符检查引用相等:如果指针相同,则返回 true。它不检查内容是否相等。编译时发现的相同字符串会被折叠成一个String
实例,所以它适用于String
文字,但不适用于运行时生成的字符串。
例如,"Foo" == "Foo"
可能有用,但是"Foo" == new String("Foo")
不会,因为new String("Foo")
创建一个新的String
实例,并打破任何可能的指针相等。
更重要的是,most Strings
您在现实世界的程序中处理的内容是运行时生成的。文本框中的用户输入是运行时生成的。通过套接字接收的消息是运行时生成的。从文件中读取的内容是运行时生成的。所以使用它非常重要equals
方法,而不是==
运算符,如果您想检查内容是否相等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)