Java中int与String类型变量的互转

Java中int与String类型变量的互转

	最近在LeetCode看了些算法题,不少地方我用到了基础类型的转换,在这里总结一下常见的类型转换方法。
  1. int转String
    方法一:
public static void main(String[] args) {
        int a = 3;
        String s = a+"";
        System.out.println(s);        // console: 3
        System.out.println(getType(s));  // console: class java.lang.String
}

public static String getType(Object o){ //获取变量类型方法
    return o.getClass().toString(); //使用int类型的getClass()方法
}

方法二:

int a = 3;
String s = String.valueOf(a);
// 打印结果同上

方法三:

int a = 3;
String s = Integer.toString(a);
// 打印结果同上

效率分析:
首先说明三个方法的本质都是调用了convertInt方法,详情去JDK源码看。所以这三种方法的时间效率取决于调用convertInt方法前的操作耗时。
String.valueOf(object)的方法不用担心object是否为null这一问题,JDK中String.valueOf(object)源码:

public static String valueOf(Object obj) {return (obj==null)?"null":obj.toString();}

其本质是通过三元运算符判断转换类型的对象是否为空,还是使用Object类的toString方法完成类型转换,由于三目运算符的效率高于if…else(详情见https://blog.csdn.net/qq_36763419/article/details/91411740),所以该方法的总体效率略高于第三种方法。而第一种方法+""是通过StringBuiler(或者StringBuffer)的append()函数实现的,由于在new StringBuilder()时会耗掉一些时间,所以这个方法是效率最差的。
2. String转int
注:str中可能有不是数字的字符,因此要抛异常
方法一:
Integer.parseInt(str)
代码如下:

String str = "123";
        try {
            int a = Integer.parseInt(str);
            System.out.println(a);       // console 123
            System.out.println(getType(a)); // console class java.lang.Integer
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

方法二:
Integer.valueOf(str).intValue();

int a = Integer.valueOf(str).intValue(); //打印输出同上

耗时情况对比:
方法一执行一万次的耗时](https://img-blog.csdnimg.cn/20200116150120413.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTgwODMx,size_16,color_FFFFFF,t_70)
方法二执行一万次的耗时](https://img-blog.csdnimg.cn/20200116150216320.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTgwODMx,size_16,color_FFFFFF,t_70)
效率分析:让我们看看valueOf方法的源码:
我们可以看到它就是调用parseInt方法来实现类型转换的,后面的参数radix10指转换int型数据的进制数。
我
方法二后面还调用了intValue()方法
在这里插入图片描述
故耗时会高于直接使用parseInt的方法。

发布了4 篇原创文章 · 获赞 1 · 访问量 137

猜你喜欢

转载自blog.csdn.net/qq_41580831/article/details/103997510