Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较。
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方式来进行转换的。
 public static String valueOf(int i) {
    return Integer.toString(i);
 }
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方式转换比较。的更多相关文章
- Java 之String.valueOf(obj)
		
实例代码如下: String str = null; String uSelectDate = String.valueOf(str); System.out.println("====== ...
 - Java中String.valueOf、toString、(String)的区别
		
原文地址http://blog.csdn.net/yangzhaomuma/article/details/51173138 原文地址https://www.cnblogs.com/xhyouyou/ ...
 - java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别
		
方法1:采用 Object.toString()方法 在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用 ...
 - Java中String.valueOf()方法的解释
		
1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...
 - 如果对象为空,java函数String.valueOf(Object obj)返回"null"字符串
		
源码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toStr ...
 - java中String.valueOf()和toString()方法的区别
		
http://www.ztyhome.com/android-tostring-string-valueof-diff/
 - 转换String三种方式比较:toString()、String.valueOf()、(String)
		
简单介绍: 1.toString,需要保证调用这个方法的类.方法.变量不为null,否则会报空指针. 2.String.valueOf.这个方法在使用的时候是有些特殊的.一般情况下,如果是确定类型的n ...
 - JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果
		
先来看段代码 public class IntegerDemo { public static void main(String[] args) { String num = null; System ...
 - java中String和int相互转换常用方法详解
		
java中int和String的相互转换常用的几种方法: String > int s="10";int i;第一种方法:i=Integer.parseInt(s);//默 ...
 
随机推荐
- Struts 2.3.24源码解析+Struts2拦截参数,处理请求,返回到前台过程详析
			
Struts2官网:http://struts.apache.org/ 目前最新版本:Struts 2.3.24 Struts1已经完全被淘汰了,而Struts2是借鉴了webwork的设计理念而设计 ...
 - JVM堆和栈的区别
			
物理地址 堆的物理地址分配对对象是不连续的.因此性能慢些.在GC的时候也要考虑到不连续的分配,所以有各种算法.比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记--压缩) ...
 - BZOJ 4619 Swap Space 解题报告
			
今天是因为David Lee正好讲这个题的类似题,我才做了一下. 本题是world final 2016的一道水…… 题目地址如下 http://www.lydsy.com/JudgeOnline/p ...
 - Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
			
项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...
 - Guava学习笔记:Preconditions优雅的检验参数
			
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处 ...
 - LoadRunner上传及下载文件
			
(1)LoadRunner上传文件 web_submit_data("importStudent.do", "Action=https://testserver/cons ...
 - windows的IIS下的负载均衡
			
来自http://www.cnblogs.com/allen0118/p/4294066.html 在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一 ...
 - Gulp.js 参考手册,自动化构建利器
			
Gulp 是最新的基于 Node 的自动化构建工具,希望能够取代 Grunt,成为最流行的 JavaScript 任务运行器.通过结合 NodeJS 的数据流的能力,只需几步就能搭建起自己的自动化项目 ...
 - Sublime text 3  快捷键的使用
			
快捷键的便捷使用: ctr+shift+n:打开新的sublime text ctr+shift+w:关闭sublime text ctr+o:打开 某个文件 ctrl+n:新建一个文本 ctrl+w ...
 - .net弹出框
			
弹出框可以使用div来显示在前台增加 <div id="flowDiv" runat="server"> <div class="r ...