JAVA服务器端性能优化----String
2020-11-26 18:06
标签:java 使用 os strong for re 方法1 使用+= String s = new String(); for (int i = 0; i
s+= "a"; } 方法2 使用带缓冲区的StringBuffer StringBuffer s = new StringBuffer(); for (int i = 0; i
s.append("a") } 方法1执行时间大概在2000ms左右,方法2却只要10ms左右。 s+= "a" 实际上被转换成了 s = (new StringBuffer()).append(s).append(“a”).toString(); 反复多次的创建新对象,自然会消耗更多的时间 注意:像 s = “a” + “b” + “c” 这样的语句,切勿写成 s = “a” ; s += “b”; s += “c”; 不然又要多消耗很多时间。s = “a” +“b” + “c” 本身会被编译为s = _-temp,而__temp = “abc”. 当然,如果因为程序要求s 是由三个变量a,b,c连接而成,那么请使用s = a + b + c 而不是s = a; s += b; s += c; 假设有两个字符串a,b,现在需要忽略大小写来比较 方法1 ic_a = a.toUpperCase(); ic_b = b.toUpperCase(); a.equals(b); 方法2 a.equalsIgnoreCase(b); 方法1的执行时间会远远大于方法2 还是这两个字符串a,b,下面给定5种情况 情况1 a = "he" + "llo" b = "hello" 使用a.equals(b);来比较 情况2 a = "hellO" b = "hello" 使用a.equals(b);来比较 情况3 a = "hello1" b = "hello" 使用a.equals(b);来比较 情况4 a = "hellO" b = "hello" 使用a. equalsIgnoreCase (b);来比较 情况5 a = "hello1" b = "hello" 使用a. equalsIgnoreCase (b);来比较 执行时间会是 情况4>情况2 >情况3 >情况5 >情况1. 情况1中,由于编译器的优化,a和b实际上指向同一个字符串,比较速度自然快。情况2需要比较到最后一个字符才知道不同,因此时间长。而情况4比较的维度比2更多,因此时间还要长。而情况3,5由于两个字符串的长度不一样,也可以比较快的比较出结果,但是会略慢于情况1。为什么情况5会比情况3快一点呢,是因为equalsIgnoreCase检查长度的步骤比equals中早一点。 JAVA服务器端性能优化----String,搜素材,soscw.com JAVA服务器端性能优化----String 标签:java 使用 os strong for re 原文地址:http://blog.csdn.net/evanstudying/article/details/24732185String的连接
String的比较
上一篇:java
下一篇:javaScript 对象的使用