单引号跟双引号的区别
在Java中,
单引号(' '),在常量池里面创建的是char类型
双引号(" "),在常量池里面创建的是String类型
先上Java String中 equals方法的源码
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (!COMPACT_STRINGS || this.coder == aString.coder) {
return StringLatin1.equals(value, aString.value);
}
}
return false;
}
第一步:可以看出,它是先“==”号来进行比较,“==”号对于Java的基础类型是直接比较大小的,但对于String这种Java的对象类型,比较的是对象的地址。
所以这里先比较对象的地址,如果是同一个String对象,就直接返回,提高方法运行的效率。
第二步:然后比较这个对象是不是String类型的(使用instanceof方法),如果是就比较值的大小。
结论
如果equals()方法里面加入了单引号,会在第二步的判断中被拒绝,返回false
Java中的String包里面的equals()方法是用于比较两个String类型变量的值的大小的。