为什么if else判断的时候str判断不出来,直接跳过了,求解释
== “运算符” 比较【堆中对象】的引用或内存位置,无论它们是否指向相同的位置。
每当我们使用运算符 new 创建对象时,它都会为该对象创建 一个新的内存 位置。
所以我们使用 == “运算符” 来检查两个对象的内存位置或地址是否相同。
我们可以使用 == “运算符” 进行引用比较(地址比较);
使用 .equals() 方法进行【内容比较】。
简单来说:
== 检查两个对象是否指向【相同的内存位置】,而 .equals() 计算对象中【值的比较】。
我来回答一下题主的问题。
Java的字符串是引用类型,不是基本类型。判断字符串相等应该使用.equals()
,而不是==,具体区别可以参考这篇文章:https://blog.csdn.net/qq_41638851/article/details/103210452 。
Java7以上版本,可以使用switch...case...直接判断字符串,其实也是equals()
。
采用"fire".equals(str)
比str.equals("fire")
更好,理由是:str有可能是空的,易引发空指针异常,"fire".equals(str)
不会引发空指针异常。
如果我的回答对题主有帮助,还望题主可以采纳!