JAVA中string类型和整数类型互相转换方法详解

一、String与整型间的转换(int、long、integer等都属于整型)

1.string2int:

1)使用Integer.parseInt(String)方法

String str = "111";
Integer num = Integer.parseInt(str);

方法源码:

    public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
    }

 目的:将字符串参数解析为有符号十进制整数

注意:字符串中的字符必须都是十进制数字,但第一个字符可以是减号'-' 表示负值,或者加号'+' 表示正数。

String str = "-111";
Integer num = Integer.parseInt(str);
String str = "+111";
Integer num = Integer.parseInt(str);

2)使用Integer.valueOf(String)方法

String str = "111";
Integer num = Integer.valueOf(str);

方法源码:

    public static Integer valueOf(String s) throws NumberFormatException {
        return Integer.valueOf(parseInt(s, 10));
    }

3)方法解析:

 

        通过方法的源码可以看到,两中方法实质上都是通过调用 parseInt(String s, int radix)来实现的;

        但valueOf(String s)并未直接调用parseInt(String s, int radix)方法,而是以Integer.valueOf(parseInt(s, 10))的形式又进行了一次嵌套,间接进行了parseInt(String s, int radix)方法的调用,因此在效率上会比parseInt(String s)中直接调用parseInt(String s, int radix)方法低一些;

        如果程序对效率的要求严格且需要进行类型转换的的地方较多,推荐使用

parseInt(String s)方法进行转换

2.int2string:

1)Integer.toString(int i)

Integer num = 111;
String str = Integer.toString(num);

 方法源码:

    @IntrinsicCandidate
    public static String toString(int i) {
        int size = stringSize(i);
        if (COMPACT_STRINGS) {
            byte[] buf = new byte[size];
            getChars(i, size, buf);
            return new String(buf, LATIN1);
        } else {
            byte[] buf = new byte[size * 2];
            StringUTF16.getChars(i, size, buf);
            return new String(buf, UTF16);
        }
    }

 2)String.valueOf(int i)

Integer num = 111;
String str = String.valueOf(num);

方法源码:

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

obj.toString()方法:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

 3)方法解析:

 

       通过源码可以看到,在Integer.toString(int i)方法中直接编译了int类型转换为string类型的具体实现过程;

        在String.valueOf(int i)方法中,是通过调用obj.toString()方法来实现的,而obj.toString()方法又最终通过Integer.toHexString(hashCode())方法来实现最终的转换;

        所以在效率上Integer.toString(int i)显然比String.valueOf(int i)要高,所以若工程追求执行效率,推荐使用Integer.toString(int i)来进行参数转换。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值