一些代码段,求解说,在参照jfinal写自己的工具类的时候,有一些小问题,求解说!
直接贴代码
jfinal的代码段:
public static boolean isBlank(String str) {
if(str == null) {
return true;
} else {
int len = str.length();
if(len == 0) {
return true;
} else {
int i = 0;
while(i < len) {
switch(str.charAt(i)) {
case '\t':
case '\n':
case '\r':
case ' ':
++i;
break;
default:
return false;
}
}
return true;
}
}
}我的代码段:
public static boolean isBlank(String s) {
return s == null || s.trim().length() == 0;
}理由:
@Test public void test2() { System.out.println("\n\t\n \n".trim()); System.out.println("\n\t\n \n".trim().length() == 0); System.out.println("\n\t\n \naaa\n\t\n \n".trim()); System.out.println("\n\t\n \naaa\n\t\n \n".trim().length() == 0); System.out.println("\na a\n\t\na \n".trim()); System.out.println("\na a\n\t\na \n".trim().length() == 0); System.out.println("\n\n\t\n \n".trim()); System.out.println("\n\n\t\n \n".trim().length() == 0); System.out.println("" == null); }
难道是trim方法的效率太低? 毕竟它是找出空白,然后把空白切掉,有两次循环。。。。。。不过jdk的效率应该还行的吧?!! 求解,是什么原因
这个改进,主要是为了避免 trim() 方法被调用,此方法有一个 new String(...) 动作,性能肯定不如改进后的好