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
可以看出,基本上相同。
目录
相关文章
|
7天前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`&quot;123abc&quot;`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
6天前
|
Java 数据处理 Apache
探讨Java中判断String类型为空和null的方法
探讨Java中判断String类型为空和null的方法
11 1
|
6天前
|
存储 SQL 关系型数据库
【BUG记录】Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xA6' for column 'name' at row 1
在MySQL中遇到`Incorrect string value`错误通常是因为尝试插入的字符串包含不被数据库字符集支持的字符,如表情符号。错误根源是MySQL默认的utf8不支持4字节的UTF-8字符(如Emoji)。
16 1
|
9天前
|
Java API 索引
java中String类常用API
java中String类常用API
|
3天前
|
存储 Java API
Java基础之String类
Java的String类是引用类型,用于创建和操作字符串。字符串对象在`java.lang`包中,不可变。创建方式包括字面量和`new`关键字。字符串池存储字符串常量,避免重复。比较字符串用`equals()`(区分大小写)和`equalsIgnoreCase()`(不区分大小写)。`length()`返回长度,`concat()`或`+`拼接,`substring()`截取,`indexOf()`和`lastIndexOf()`查找,`replace()`替换,`split()`分割。这些是常用的字符串API。
7 0
|
3天前
|
Java
Java基础之String类
Java基础之String类
8 0
|
26天前
|
Java
Java中String的用法
Java中String的用法
13 1
|
26天前
|
存储 缓存 安全
Java性能优化(二):Java基础-String对象及其性能优化
在深入探讨了String字符串的性能优化后,我们认识到优化字符串处理对提升系统整体性能的重要性。Java在版本迭代中,通过精心调整成员变量和内存管理机制,不断对String对象进行优化,以更高效地使用内存资源。String对象的不可变性是Java语言设计中的一个关键特性,它不仅确保了字符串的安全性,也为字符串常量池的实现提供了基础。通过减少相同值的字符串对象的重复创建,常量池有效地节约了内存空间。然而,不可变性也带来了挑战。在处理长字符串拼接时,我们需要显式使用类来避免性能下降。
31 1
|
26天前
|
安全 Java 测试技术
滚雪球学Java(50):理解Java中String、StringBuilder和StringBuffer的区别与选择
【6月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
17 0
滚雪球学Java(50):理解Java中String、StringBuilder和StringBuffer的区别与选择
|
6天前
|
存储 缓存 安全
java源码之String详解
java源码之String详解
11 0