JAVA中int与string互转的效率对比

简介: 今天突然心血来潮,想看看int与string互转的效率,所以试一下。 1.int转string对比 众所周知,int转string有三种方法: <pre name="code" class="html">* (1) String.valueOf(i)* (2) Integer.toString(i)* (3) i + "" 下面是对比: public

今天突然心血来潮,想看看int与string互转的效率,所以试一下。

1.int转string对比

众所周知,int转string有三种方法:

<pre name="code" class="html">* (1) String.valueOf(i)
* (2) Integer.toString(i)
* (3) i + "" 
 下面是对比:

public class TestInt2String {
	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.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			intArr[i] = i + 1;
		}
		Long t2 = System.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			strArr1[i] = String.valueOf(intArr[i]);
		}
		Long t3 = System.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			strArr2[i] = Integer.toString(intArr[i]);
		}
		Long t4 = System.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			strArr3[i] = intArr[i] + "";
		}
		Long t5 = System.nanoTime();
		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)/1e6);
		System.out.println("String.valueOf(i):" + (t3 - t2)/1e6);
		System.out.println("Integer.toString(i):" + (t4 - t3)/1e6);
		System.out.println("i+\"\":" + (t5 - t4)/1e6);
	}
}

结果如下:

t1 = 19060665491808
t2 = 19060671491829
t3 = 19060801637489
t4 = 19060834225943
t5 = 19061039822991
赋值:6.000021
String.valueOf(i):130.14566
Integer.toString(i):32.588454
i+"":205.597048

可以看出来,Integer.toString是最快的。

2.string转int对比

string转int

* (1) Integer.parseInt(str)
* (2) Integer.valueOf(s).intValue()
下面是对比:

public static void main(String[] args) {
		String[] strArr = new String[1000000];
		int[] intArr1 = new int[1000000];// 为了公平分别定义三个数组
		int[] intArr2 = new int[1000000];
		int[] intArr3 = new int[1000000];
		// 赋值
		Long t1 = System.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			strArr[i] = Integer.toString(i + 1);
		}
		Long t2 = System.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			intArr1[i] = Integer.parseInt(strArr[i]);
		}
		Long t3 = System.nanoTime();
		for (int i = 0; i < 1000000; i++) {
			intArr2[i] = Integer.valueOf(strArr[i]);
		}
		Long t4 = System.nanoTime();
		for (int i=0;i<1000000;i++){
			intArr3[i] = Integer.valueOf(strArr[i]).intValue();
		}
		Long t5 = System.nanoTime();
		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) / 1e6);
		System.out.println("Integer.parseInt(s):" + (t3 - t2) / 1e6);
		System.out.println("Integer.valueOf:" + (t4 - t3) / 1e6);
		System.out.println("Integer.valueOf(s).intValue()" + (t5 - t4) / 1e6);
	}

结果如下:

t1 = 20125416119650
t2 = 20125513532523
t3 = 20125542724055
t4 = 20125569908737
t5 = 20125596152378
赋值:97.412873
Integer.parseInt(s):29.191532
Integer.valueOf:27.184682
Integer.valueOf(s).intValue()26.243641
可以看出,基本上相同。
目录
相关文章
|
23天前
|
存储 算法 Java
Java零基础-charAt(int index)详解
【10月更文挑战第20天】Java零基础教学篇,手把手实践教学!
46 4
|
28天前
|
存储 算法 Java
Java零基础-charAt(int index)详解
【10月更文挑战第16天】Java零基础教学篇,手把手实践教学!
15 1
|
1月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
48 3
|
3月前
|
Java
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
这篇文章解释了Java中`int`基本数据类型和其包装类`Integer`之间的区别,并指出在进行`==`运算时,`Integer`会拆箱为`int`类型,然后比较它们的值是否相等。
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
|
3月前
|
Java
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?
|
3月前
|
前端开发 Java
成功解决:java.lang.String cannot be cast to java.lang.Integer
这篇文章记录了作者在使用Axios二次封装时遇到的一个Java类型转换问题,即前端传递的字符串参数不能直接转换为Integer类型,文章提供了正确的转换方法来解决这个问题。
成功解决:java.lang.String cannot be cast to java.lang.Integer
|
3月前
|
安全 Java API
Java系类 之 String、StringBuffer和StringBuilder类的区别
这篇文章讨论了Java中`String`、`StringBuffer`和`StringBuilder`三个类的区别,其中`String`是不可变的,而`StringBuffer`是线程安全的可变字符串类,`StringBuilder`是非线程安全的可变字符串类,通常在单线程环境下性能更优。
Java系类 之 String、StringBuffer和StringBuilder类的区别
|
3月前
|
Dart
Dart基础:进制转换、int与string互转
Dart基础:进制转换、int与string互转
125 3
|
3月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
504 1
|
4月前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
72 5
下一篇
无影云桌面