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方式转换比较。的更多相关文章

  1. Java 之String.valueOf(obj)

    实例代码如下: String str = null; String uSelectDate = String.valueOf(str); System.out.println("====== ...

  2. Java中String.valueOf、toString、(String)的区别

    原文地址http://blog.csdn.net/yangzhaomuma/article/details/51173138 原文地址https://www.cnblogs.com/xhyouyou/ ...

  3. java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别

    方法1:采用 Object.toString()方法 在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用 ...

  4. Java中String.valueOf()方法的解释

    1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...

  5. 如果对象为空,java函数String.valueOf(Object obj)返回"null"字符串

    源码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toStr ...

  6. java中String.valueOf()和toString()方法的区别

    http://www.ztyhome.com/android-tostring-string-valueof-diff/

  7. 转换String三种方式比较:toString()、String.valueOf()、(String)

    简单介绍: 1.toString,需要保证调用这个方法的类.方法.变量不为null,否则会报空指针. 2.String.valueOf.这个方法在使用的时候是有些特殊的.一般情况下,如果是确定类型的n ...

  8. JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果

    先来看段代码 public class IntegerDemo { public static void main(String[] args) { String num = null; System ...

  9. java中String和int相互转换常用方法详解

    java中int和String的相互转换常用的几种方法: String  > int s="10";int i;第一种方法:i=Integer.parseInt(s);//默 ...

随机推荐

  1. [javaSE] 反射-动态加载类

    Class.forName(“类的全称”) ①不仅表示了类的类类型,还代表了动态加载类 ②请大家区分编译,运行 ③编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 Ⅰ所有的new对象都是静态加载 ...

  2. Atitit.atiRI  与 远程调用的理论and 设计

    Atitit.atiRI  与 远程调用的理论and 设计 1. 怎么做到透明化远程服务调用?1 2. 2  怎么对消息进行编码和解码1 2.1.  确定消息数据结构dsl1 2.1.1. 消息里为什 ...

  3. ubuntu 14.04 解决JavaMelody 图片中文乱码

    从windows系统中,copy了MSYH.TTC和MSYHBD.TTC 2个文件到 服务器的%JAVA_HOME%\jre\lib\fonts\fallback 目录中, (如果fallback目录 ...

  4. Linux学习历程(持续更新整理中)

    1.文件目录操作命令 (1) ls   显示文件和目录列表 a ls -l  显示文件的详细信息 b ls -a 列出当前目录的所有文件,包含隐藏文件. c stat '目录/文件'   显示指定目录 ...

  5. css知多少(1)——我来问你来答

    1. 引言 各位前端或者伪前端(比如作者本人)的同志们,css对你们来说不是很陌生.比如我,在几年之前上大学的时候,给外面做网站就用css,而且必须用css.这样算下来也得六年多了,有些功能可能轻车熟 ...

  6. Cool!15个创意的 CSS3 文本效果【下篇】

    这里文章收集了15个创意的 CSS3 文本效果,所有的都是精心挑选,这些可能会增加创意的火花到你的下一个项目.其中有些是用于特定用途,而另一些则适用于多种用途.如果你想要一个精彩而又充满色彩的文字效果 ...

  7. react实例之todo,做一个实时响应的列表操作

    react实例之todo, 做一个实时响应的列表操作 在所有的mvc框架中,最常见的例子不是hello world,而是todo,由于reactjs的简单性,在不引用flux和redux的情况下,我们 ...

  8. [deviceone开发]-do_Camera的简单示例

    一.简介 do_Camera组件是通过拍照裁剪来生成图片的组件,这个示例直观的展示组件基本的使用方式 二.效果图 三.相关下载 https://github.com/do-project/code4d ...

  9. CSS3利用text-shadow属性实现多种效果的文字样式展现

    一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...

  10. CRM 2013 自动发送报表

    Sql Server Report非常强大,导出不同格式的文档,比如work 或者excel都可以委托Reporting先做报表开发然后再在程序中调用生成指定格式的报表推送给用户,CRM也是集成了Re ...