- 浏览: 303725 次
- 性别:
- 来自: 广州
最新评论
-
qipa2015:
hao
Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片 -
chungehenyy:
Android中的JSON详细总结 -
wangys198:
请教下怎么加入一个jar包
说说APK反编译(代码插入)的那点事 -
andy199:
Android的TextView使用Html来处理图片显示、字体样式、超链接等 -
tyjxf:
加载图片是个烦人的事,我也正在困扰中
Android实现ListView异步加载图片
大家都知道JAVA中 int 类型要转化成 String 类型,可以有三种方式,分别是:
* (1) String.valueOf(i)
* (2) Integer.toString(i)
* (3) i+""
因为前两天,写一个程序时,要用到 int 转 String ,并且数据量很大,因此想看看这三种方式的效率怎样,写了一下简单的测试程序,在此记录一下。
- public class TestIntToStr {
- public static void main(String[] args) {
- int[] intArr = new int[1000000];
- String[] strArr1 = new String[1000000];//为了公平分别定义三个数组
- String[] strArr2 = new String[1000000];
- String[] strArr3 = new String[1000000];
- //赋值
- Long t1 = System.currentTimeMillis();
- for(int i=0;i<1000000;i++){
- intArr[i]=i+1;
- }
- Long t2 = System.currentTimeMillis();
- for(int i=0;i<1000000;i++){
- strArr1[i] = String.valueOf(intArr[i]);
- }
- Long t3 = System.currentTimeMillis();
- for(int i=0;i<1000000;i++){
- strArr2[i] = Integer.toString(intArr[i]);
- }
- Long t4 = System.currentTimeMillis();
- for(int i=0;i<1000000;i++){
- strArr3[i] = intArr[i]+"";
- }
- Long t5 = System.currentTimeMillis();
- System.out.println("t1 = "+t1);
- System.out.println("t2 = "+t2);
- System.out.println("t3 = "+t3);
- System.out.println("t4 = "+t4);
- System.out.println("t5 = "+t5);
- System.out.println("赋值:"+(t2-t1));
- System.out.println("String.valueOf(i):"+(t3-t2));
- System.out.println("Integer.toString(i):"+(t4-t3));
- System.out.println("i+\"\":"+(t5-t4));
- }
- }
public class TestIntToStr { public static void main(String[] args) { int[] intArr = new int[1000000]; String[] strArr1 = new String[1000000];//为了公平分别定义三个数组 String[] strArr2 = new String[1000000]; String[] strArr3 = new String[1000000]; //赋值 Long t1 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ intArr[i]=i+1; } Long t2 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ strArr1[i] = String.valueOf(intArr[i]); } Long t3 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ strArr2[i] = Integer.toString(intArr[i]); } Long t4 = System.currentTimeMillis(); for(int i=0;i<1000000;i++){ strArr3[i] = intArr[i]+""; } Long t5 = System.currentTimeMillis(); System.out.println("t1 = "+t1); System.out.println("t2 = "+t2); System.out.println("t3 = "+t3); System.out.println("t4 = "+t4); System.out.println("t5 = "+t5); System.out.println("赋值:"+(t2-t1)); System.out.println("String.valueOf(i):"+(t3-t2)); System.out.println("Integer.toString(i):"+(t4-t3)); System.out.println("i+\"\":"+(t5-t4)); } }
在JDK1.5环境下测试多次:
发现:
赋值:0
String.valueOf(i):891
Integer.toString(i):468
i+"":844
String.valueOf(i)与i+""的时间差别不大。
而Integer.toString(i)时间只有它们的一半左右,即此方法效率比较高。
评论
2 楼
lucky16
2011-04-18
huangqingyong 写道
楼主可以看一下jdk的源码:
String类:
Integer类:
所以Integer.toString(i)方法的效率比较高。但i+""内部的处理机制是怎样的呢?
String类:
public static String valueOf(int i) { return Integer.toString(i, 10); }
Integer类:
public static String toString(int i, int radix) { …… /* Use the faster version */ if (radix == 10) { return toString(i); } …… return new String(buf, charPos, (33 - charPos)); } public static String toString(int i) { if (i == Integer.MIN_VALUE) return "-2147483648"; int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i); char[] buf = new char[size]; getChars(i, size, buf); return new String(0, size, buf); }
所以Integer.toString(i)方法的效率比较高。但i+""内部的处理机制是怎样的呢?
i+""应该是使用了StringBuffer的append(), 结束的时候调用了toString()这个方法
1 楼
huangqingyong
2011-03-24
楼主可以看一下jdk的源码:
String类:
Integer类:
所以Integer.toString(i)方法的效率比较高。但i+""内部的处理机制是怎样的呢?
String类:
public static String valueOf(int i) { return [color=red]Integer.toString(i, 10)[/color]; }
Integer类:
public static String toString(int i, int radix) { …… /* Use the faster version */ if (radix == 10) { return [color=red]toString(i)[/color]; } …… return new String(buf, charPos, (33 - charPos)); } public static String toString(int i) { if (i == Integer.MIN_VALUE) return "-2147483648"; int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i); char[] buf = new char[size]; getChars(i, size, buf); return new String(0, size, buf); }
所以Integer.toString(i)方法的效率比较高。但i+""内部的处理机制是怎样的呢?
发表评论
-
textview 超链接去掉下划线和设置超链接颜色
2011-12-06 17:15 3791/** * 点击超链接时打开其他博主资料页面 * ... -
java 通过方法名称动态调用方法
2011-10-17 17:44 8155package lee; import java.lan ... -
list如何remove
2011-08-13 12:06 1146在java中对list进行操作很频繁,特别是进行list启遍历 ... -
Map获取键值,Map的几种遍历方法
2011-03-31 23:56 2038Map类提供了一个称为entrySet()的方法,这个方法返回 ... -
java中两个整数相除得到小数点并保留两位小数的方法
2011-03-18 02:08 9282当两个整数相除时,由于小数点以后的数字会被截断,使运算结果为 ... -
ByteArrayOutputStream和ByteArrayInputStream详解
2011-03-17 05:10 3123ByteArrayOutputStream类是在创建它的实例时 ... -
IO输入/输出-从InputStream到ByteArrayInputStream(源码分析)
2011-03-17 05:01 1527转载:http://miaoxiaodong78.blog.1 ... -
IO输入/输出从PipedInputStream/PipedOutputStream谈起(源码分析)
2011-03-17 04:59 1811转载:http://miaoxiaodong78.blog.1 ... -
BufferedInputStream和BufferedOutputStream
2011-03-17 03:02 23391. java.io.BufferedInputStream ... -
String.split() 分隔符不能保存后面的空字符串问题
2011-02-28 16:37 3749String 自带的Split 分割字符串类中不会把分割字符串 ... -
Strut2中Action的Result类型
2011-02-23 02:17 1038type="dispatcher" 只是跳 ... -
include file与jsp:include page的区别
2011-02-22 01:29 1493静态包含: <%include file=&quo ... -
Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql整合+分页模板(3)
2011-02-21 22:31 1818十、写测试类测试Spring和Hibernate是否结合成功, ... -
Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql整合+分页模板(2)
2011-02-21 18:06 2059六、定义基本类 1)定义Action基本类-主要定义requ ... -
Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql整合+分页模板
2011-02-21 16:10 23571、导入29个JAR包 JAR包名称 ... -
让Hibernate输出SQL语句参数配置
2011-02-20 02:45 1741在J2ee应用中,如果采用Hibernate框架,可以自动建立 ... -
Hibernate 显示完整SQL语句
2011-02-20 02:35 3295使用hibernate时,想显示sql语句,可以设置show_ ... -
log4j.properties的配置
2011-02-20 02:00 1151一、Log4j简介 Log4j有三个主要的组件:Logg ... -
java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-base
2011-02-20 00:56 1740在使用Spring的HibernateTemplate查找 ... -
使用 HibernateTemplate 实现分页查询 (HibernateCallback接口)
2011-02-19 01:45 2864HibernateTemplate 只支持 .setMax ...
相关推荐
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类boolean...
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始...
Int是java的原始数据类型,Integer是java为 int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
(1)在每一次循环中,都要先将string类型转换为stringbuffer类型,然后将‘*’追加进去,然后再调用tostring()方法,转换为string类型,效率很低。 (2)在没次循环中,都只是调用原来的那个stringbuffer对象,...
java面试笔试题集合4. 多态性: 多态性是指允许不同类的...java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引...
1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个...Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类booleanBoolean charCharacter byteByte sho
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat double...
其中a为1至9之中的一个数,项数也要可以指定。 import java.util.Scanner; class Multinomial{ public static void main(String[] args){ int a; //定义输入的 a int howMany; //定义最后的一项有多少个数字 ...
5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。 1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一...
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 ........... 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非...
来源与网上流传的125条常见的java面试笔试题大汇总 总结 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面...Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
Java不同数据存储类型使用不同遍历方法效率研究 GitHub代码仓库 数据存储类型 ArrayList HashSet HashMap LinkedList 遍历方法 传统遍历方法 for(int i=0;i<list.size();i++) { String str = list.get(i); ... ...