在查看别人写的代码时,会发现有人会这样来写一个判断字符串是否为空的语句。
public boolean isEmpty(String str){
return str.equals(""); //感觉如何?
} 你有何感想?我的感想有一点,不太理解String这个类的实现。那么,最佳的使用方法是什么呢?我想,应该这样最好。
public boolean isEmpty(String str){
return str.length()==0; //不错吧
}
说原因之前,看看String的源码的实现。
方法length
public int length() {
return count;
}
方法equals
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
正如你看到的,lengh方法简单地返回对应字符长度的值,而equals则首先判断了是否为String的引用,然后判断了是否是String类型,创建空的数组,遍历循环等。其结果导致,大多数情况下,前者性能表现比后者更好的性能。
探讨String类的isEmpty()方法优化
本文深入解析String类的isEmpty()方法实现,对比原始方法与改进方法的性能差异,通过源码分析揭示优化背后的原因,并提出更高效判断字符串空性的实现方式。
4万+

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



