字符串拼接和转换的良好习惯
来源:互联网 发布:红包破解软件 编辑:程序博客网 时间:2024/05/16 08:15
最近做代码review的时候,发现很多开发的同事们为了图省事,当有遍历String集合,做字符串拼接的时候,用+号直接拼接。于是好奇做了一个优化测试:
public static void testBuild(){ long lparam = 1000l; long start = System.currentTimeMillis(); StringBuilder stb = new StringBuilder(); for(int i=0;i<10000;i++){ stb.append(lparam); } String stbstr = stb.toString(); long end = System.currentTimeMillis()-start; long start2 = System.currentTimeMillis(); String str = ""; for(int i=0;i<10000;i++){ str += Long.toString(lparam); } long end2 = System.currentTimeMillis()-start2; log.error("友好的方式StringBuilder耗时:{},不友好用法+耗时:{}",end,end2);}
测试共执行五次,连续调用五次testBuild()方法。得出结论如下:
15:06:09.629 [main] ERROR TestC - 友好的方式StringBuilder耗时:4,不友好用法+耗时:1124
15:06:11.332 [main] ERROR TestC - 友好的方式StringBuilder耗时:0,不友好用法+耗时:168715:06:12.243 [main] ERROR TestC - 友好的方式StringBuilder耗时:2,不友好用法+耗时:908
15:06:12.911 [main] ERROR TestC - 友好的方式StringBuilder耗时:1,不友好用法+耗时:665
15:06:13.481 [main] ERROR TestC - 友好的方式StringBuilder耗时:1,不友好用法+耗时:569
相信这个结果还是很出人意料的,我事先以为肯定是有区别的,但没想到会有这么大差距。
下面我们再来看一组,字符串转换,Class<T>.toString(Class<T> param)和""+param;之间的差距。备注:param是任意基本类型数据,且都有对应包装类Class<T>可以支持*.toString(param)方法,下面一起看两种使用方式之间的区别:
public static void testStringPJ(){ long lparam = 1000l; long start = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ String mid = ""+lparam; } long end = System.currentTimeMillis()-start; long start2 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ String mid = Long.toString(lparam); } long end2 = System.currentTimeMillis()-start2; log.error("不友好的方式耗时:{},友好用法耗时:{}",end,end2);}
测试共执行五次, 得出结论如下:
15:20:08.177 [main] ERROR TestC - 不友好的方式耗时:122,友好用法耗时:61
15:20:22.951 [main] ERROR TestC - 不友好的方式耗时:100,友好用法耗时:49
15:20:34.148 [main] ERROR TestC - 不友好的方式耗时:101,友好用法耗时:45
15:20:57.075 [main] ERROR TestC - 不友好的方式耗时:119,友好用法耗时:52
15:21:09.912 [main] ERROR TestC - 不友好的方式耗时:107,友好用法耗时:85
15:21:21.631 [main] ERROR TestC - 不友好的方式耗时:134,友好用法耗时:56
- 字符串拼接和转换的良好习惯
- c/c++字符串拼接追加复制,字符串和int相互转换,sscanf的转义
- IOS开发NSString与int和float的相互转换以及字符串拼接
- jquery拼接ajax 的json和字符串拼接
- 字符串 拼接方法,公司内部的方法,用集合转换成拼接的字符串
- 字符串的拼接和拷贝的实现
- IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换
- IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换
- JAVA的字符串拼接和性能
- c语言 字符串的拼接和分割
- swift 字符串的截取和拼接
- 字符串和算术式拼接的坑
- 字符串拼接+和concat的区别
- 变量和字符串拼接
- VBA中字符串连接/字符串拼接中“&”和“+”的区别
- java语言基础(54)——变量字符串拼接和常量字符串拼接的区别
- 字符串的拼接
- SQL字符串的拼接.
- iOS 应用获取最上层全屏 Window 的正确方法
- 安卓中捕获未捕获的异常信息CrashHandler
- xutils3 对byte[] 、Blob类型数据的存储
- 车牌颜色识别现在的结果
- 《明解C语言》示例代码和练习代码[第5章]
- 字符串拼接和转换的良好习惯
- Java 单链表顺序查找
- 代码审计相关资源分享
- 在ASP.NET MVC中客户端使用文本编辑器检测到有潜在危险的 Request.Form 值。无法访问控制器。
- LeetCode笔记:168. Excel Sheet Column Title
- 网址收藏
- spring-mvc文件上传
- get方式乱码的处理方式的两种方式
- spring ioc