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一个内存空间来存放新的字符串,字符串加法运算影响了效率。

原创粉丝点击