原因写在前面:
字符串判断是否相等应该用.equals
而不是==
.equals
比较的是字符串内容,==
比较的是字符串对象的内存地址。
更新后的解释:
只怪原来学艺不精,如果认真学过.equals
和==
的区别,这个问题就很很好理解,甚至就不会出现。
".equals"和"=="的区别
==
:
- 作用于基本数据类型时,是比较两个数值是否相等;
- 作用于引用数据类型时,是比较两个对象的内存地址是否相同,即判断它们是否为同一个对象;
.equals
:
- 没有重写时,默认以
==
来实现,即比较两个对象的内存地址是否相同; - 进行重写后,一般会按照对象的内容来进行比较。这里的重写是相对于Object类说的,java的所有类都继承了Object类。像本问题涉及到的String类,它就对equals()方法进行了重写,基本数据类型int