Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较
来源:互联网 发布:core java第十版pdf 编辑:程序博客网 时间:2024/06/07 03:30
1、空串+类型变量方式转换
int i=20;String s=""+i;
这种方式实际上经过了两个步骤,首先进行了i.ToString()把 i 转换为 字符串,然后再进行加法运算,这里利用了java的toString机制来做转换。
2、String.valueOf方式转换类型
int i=20;String s=String.valueOf(i);
查看源码发现,这种方式实际上是使用了封装类(Integer)的toString方式来进行转换的。
1 public static String valueOf(int i) {2 return Integer.toString(i);3 }
3、使用类型封装类的toString()方法
Integer i=20;String s=i.toString();
查看java源码发现,toString实际上是new 了一个String。
简单进行速度的测试。
public class toStringDome { public static void main(String[] args) { Random ra=new Random(new java.util.Date().getTime()); String tmp=null; int runtimes=1000000; int range=50; long startTime=System.currentTimeMillis(); //获取开始时间 for (int i = 0; i <runtimes; i++) { tmp=String.valueOf(ra.nextInt(range)); } long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("使用String.valueOf程序运行时间: "+(endTime-startTime)+"ms"); long startTimeToString=System.currentTimeMillis(); //获取开始时间 for (int i = 0; i <runtimes; i++) { tmp = ""+ra.nextInt(range); } long endTimeString=System.currentTimeMillis(); //获取结束时间 System.out.println("使用(空串来转换+类型变量)程序运行时间: "+(endTimeString-startTimeToString)+"ms"); Integer temp=0; long startTimeToString1=System.currentTimeMillis(); //获取开始时间 for (int i = 0; i <runtimes; i++) { temp= ra.nextInt(range); tmp =temp.toString(); } long endTimeString2=System.currentTimeMillis(); //获取结束时间 System.out.println("使用Integer的toString程序运行时间: "+(endTimeString2-startTimeToString1)+"ms"); }}运行结果:
使用String.valueOf程序运行时间: 87ms
使用(空串来转换+类型变量)程序运行时间: 245ms
使用Integer的toString程序运行时间: 77ms
经过简单测试后发现,使用(空串来转换+类型变量)方式转换比String.valueOf与Integer的toString慢了两倍以上。
我个人理解使用(空串来转换+类型变量)方式转换效率慢是因为这种方式实际上经过了两个步骤,首先进行了i.ToString()把 i 转换为 字符串,然后再进行字符串加法运算,由于字符串是不可变的,要需要new一个内存空间来存放新的字符串,字符串加法运算影响了效率。
- Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较
- String类型与Integer类型的转换
- (String)强制转换、toString()和String.valueOf()的区别
- (String)强制转换、toString()和String.valueOf()的区别
- Integer不能强制转换为String:toString()、(String)和String.valueOf()的区别
- Integer不能强制转换为String:toString()、(String)和String.valueOf()的区别
- String强制类型转换与toString()方法 的区别应用
- (String)、toString、String.valueOf的区别以及 Integer.parseInt()与.valueOf()的区别
- Java日期类型与String的转换
- java的boolean与string类型转换
- toString() / String.valueOf() VS 强制类型转换 (String)
- String与Integer 之间的转换
- char *、CString和string之间的类型转换与比较
- string类型与int类型的转换
- 日期类型与String类型的转换
- Android中,String与int类型转换的方式
- 浅谈(String),toString() ,String.ValueOf() 3种类型转换
- Date String 类型的互相转换 和 valueOf 、parseInt() 方法的比较
- [黑马程序员]_构造函数和继承
- 泛型类接口定义
- 解决:动态MMap没有空间的问题
- JPA 、 Hibernate 注解
- 关闭navigator.getUserMedia打开的摄像头
- Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较
- svn提交过滤条件,过滤不需要提交的文件格式
- IE11
- C语言的布尔类型(_Bool)
- android library projects cannot be launched
- Java内存原型
- Dirichlet Process and Hierarchical Dirichlet Process
- hash冲突之线性探测
- SQL跨服务器查询