29.hashCode()
String类重写自Object类中的hashCode()方法。
public int hashCode() {
int h = hash; //hash默认值为0
if (h == 0 && value.length > 0) { //&&两个条件需要都满足
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i]; //String类中计算hashCode值
}
hash = h;
}
return h;
}
30.compareTo()
String类中的compareTo(),实现自Comparable接口中的抽象方法。
比较字符串的大小
public int compareTo(String anotherString) {
int len1 = value.length; //调用方法的对象的value数组的长度
int len2 = anotherString.value.length; //参数对象的value数组的长度
int lim = Math.min(len1, len2); //两者比较获取一个最小值。
char v1[] = value; //调用方法的对象的value数组将地址赋值一份交给v1
char v2[] = anotherString.value;//参数对象的value数组将地址赋值一份交给v2
int k = 0;
while (k < lim) { //以最短对象value数组的长度作为循环的条件
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) { //一一对比,
return c1 - c2; //如果不相等,则返回两数之差,
}
k++;
}
return len1 - len2; //如果while循环中的if语句未执行,返回两个对象的value数组的长度之差
}
31.toString()
String类方法重写自Object的toString()方法,返回String类型对象的字面值。
public String toString() {
return this;
}
32String类中的equalsIgnoreCase()
//忽略大小写比较
public boolean equalsIgnoreCase(String anotherString) {
return (this == anotherString) ? true
: (anotherString != null)
&& (anotherString.value.length == value.length)
&& regionMatches(true, 0, anotherString, 0, value.length);//三目运算符先判断两对象的地址是否相同,如果相同返回true,否则判断参数对象是否未Null,如果为Null返回false,否则继续判断两对象的value数组长度是否相等,如果不相等,返回false,否则调用regionMatches()继续判断,该方法忽略大小比较两对象value数组内的字符是否一一相等。如果都相等,返回true,否则返回false。
}
33compareToIgnoreCase()
.简单了解该方法即可,该方法和compareTo()方法的结果类似,但是是忽略大小写的比较。
本文详细解析了Java中String类的hashCode()、compareTo()、toString()以及equalsIgnoreCase()方法的实现原理和使用场景。hashCode()用于计算对象的哈希值;compareTo()根据Unicode值比较字符串;toString()返回字符串的字面值;equalsIgnoreCase()忽略大小写比较字符串。这些方法在字符串操作中扮演着重要角色。
2703

被折叠的 条评论
为什么被折叠?



