测试int部类转String类型的两种方法的执行效率

测试int类型转String类型的两种方法的执行效率

在Java中Int类型转String的两种方法:Integer.toString和 String.valueOf,这两种方法都能实现,以前也从来没有考虑效率问题,今天由于项目上需要大量的转换,考虑到效率问题,于是做了下面测试:


package hualu.ehualu.pmis;

/**
 * 测试int类型转String类型的两种方法的执行效率
 * @author chenqz5633@163.com
 *
 */
public class TestInt2String {
	public static void main(String[] args) {
		// 第一个方法比第二个方法用时长的次数
		int firstMethodOld = 0;
		// 此循环加大循环次数,减少偶然因素带来的影响
		for (int j = 0; j < 10; j++) {
			// 方法1--------------------------------
			long time1 = System.currentTimeMillis();
			String number1 = null;
			// 此模块模拟你可能有多个int变量需要转化成String
			for (int i = 0; i < 10000000; i++) {
				number1 = Integer.toString(186);
			}			
			//计算从调用开始到结束的时间差
			long returnTime1 = (System.currentTimeMillis() - time1);
			System.out.println("Integer.toString方法用时:" + returnTime1 + "毫秒,值为:" + number1);
			// 方法1----end---------------------------------------
			// 方法2-------------------------------------------------
			long time2 = System.currentTimeMillis();
			String number2 = null;

			// 此模块模拟你可能有多个int变量需要转化成String
			for (int i = 0; i < 10000000; i++) {
				number2 = String.valueOf(186);
			}
			
			//计算从调用开始到结束的时间差
			long returnTime2 = (System.currentTimeMillis() - time2);
			System.out.println("String.valueOf用时:" + returnTime2 + "毫秒,值为:" + number2);
			// 方法2------end-------------------------------------------

			//比较两种方法的用时长短
			if (returnTime1 > returnTime2) {
				firstMethodOld++;
			}
		}
		
		float Probability= firstMethodOld / 10f;
		//System.out.println("firstMethodOld:"+firstMethodOld);
		System.out.println("Integer.toString方法调用时间比String.valueOf方法调用时间长的概率是:" + Probability);
		
		
/**执行结果如下:
Integer.toString方法用时:328毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:329毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:312毫秒,值为:186
String.valueOf用时:344毫秒,值为:186
Integer.toString方法用时:312毫秒,值为:186
String.valueOf用时:329毫秒,值为:186
Integer.toString方法用时:312毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:328毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:313毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:328毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:313毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法用时:328毫秒,值为:186
String.valueOf用时:328毫秒,值为:186
Integer.toString方法调用时间比String.valueOf方法调用时间长的概率是:0.1



	*/	
	

	}
}

其实我们看String.java源码也能看出来:

       


  public static String valueOf(int i) {
        return Integer.toString(i, 10);
    }

 

String.valueOf也是调用的Integer.toString,所以String.valueOf属于二次装载,不如Integer.toString来的直接。所以咱以后最好用Integer.toString方法来转换。