【发布时间】:2018-11-28 14:07:44
【问题描述】:
我是 Java 新手,想知道为什么 "5".equals(5) 评估为真正的意思是两者都是 5 并且在我眼中似乎是同一件事(它们似乎与我相等)所以为什么不它评估它为真?
感谢您的帮助:)
【问题讨论】:
-
java 是静态类型的。谷歌它。
-
他们不一样。你为什么会这样假设?如果它们“相同”,
5.equals("5")会做什么? -
JavaScript 有一个以这种方式运行的运算符 (
==)。现在大多数人建议不要使用它来支持===,因为有些奇怪的效果。 -
在使用这种宽松的相等检查时遇到的“奇怪效果”的一个例子是很难保持瞬态:您说 String "5" 与 Character '5 基本相同' 或整数 5,但后来有人建议它也应该与罗马文字一起使用——毕竟“V”也是 5。突然你需要说字符串“5”等于字符串“V”或放弃传递性——你有“A等于B”和“B等于C”,但“A不等于C”——这导致各种错误和混乱。
-
@Hulk 可能是丢失传递性的一个更好的例子是
5.0和5.00,它们与数字相同,但与字符串不同。