一些代码段,求解说,在参照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(...) 动作,性能肯定不如改进后的好