Java String转Int特殊操作

在Java当中,不能直接通过“+”来操作当前两个字符串类型的数字相加,例如:

String a = "100";
String b = "50";
String c = a + b;
System.out.println(c);

输出结果一定是:10050
所以重点来了:怎么进行转化呢?
第一种办法:使用Integer.valueOf(),它将返回一个包装器类型的Integer,当然可以通过自动拆箱的办法将其转化成int类型。

        String a = "100";
        String b = "50";
        int A = Integer.valueOf(a);
        int B = Integer.valueOf(b);
        int C = A + B;
        System.out.println(C);

这个的输出结果就是:150

第二种办法:使用Integer.parseInt()。它将返回一个基本数据类型int。

        String a = "100";
        String b = "50";
        int A = Integer.parseInt(a);
        int B = Integer.parseInt(b);
        int C = A + B;
        System.out.println(C);

输出结果仍然是:150
这两种方式首先推荐的是第二种,因为没有涉及到装箱拆箱,所以效率回更高一些。但其实还有第三种办法,可能有人现在大脑一片空白。所有重中之重来了:

public class String2IntDemo {
    public static void main(String[] args) {
        String a = "100";
        String b = "50";
        int A = string2int(a);
        int B = string2int(b);
        int c = A + B;
        System.out.println(c);
    }

    public static int string2int(String s) {
        int num = 0;
        int pos = 1;
        for (int i = s.length() - 1; i >= 0; i--) {
            num += (s.charAt(i) - '0') * pos;
            pos *= 10;

        }
        return num;

    }
}

这段程序输出的结果同样是 150。那眼睛雪亮的同学可能就发现了,string2int() 方法到底是个什么样的神奇方法,还有把字符串转成整形的功效?

首先,必须得普及一点常识,同学们需要对 ASCII 码有一点了解,就是所有的字符都有识别它们的代码——这代码就是 ASCII 码。

基于这一点,所有数字型的字符减去字符‘0’,将会得到该字符的绝对值,是一个整数。
那有些机灵点的同学可能就想到了,通过一个 for 循环,遍历一下字符串,然后计算出当前位置上的整数值,个位数乘以 1,十位数乘以 10,百位数乘以 100,然后再加起来,就是字符串对应的整数值了。

没错,没错,string2int() 方法就是这么做的,如果参数是字符串“520”,那返回的结果就是整形 520;如果参数是字符串“100”,那返回的结果就是整形 100;如果参数是字符串“50”,那返回的结果就是整形 50。

如果你是一名有追求的程序员,那么对于 Integer.valueOf() 和 Integer.parseInt() 都不会太满意,因为这只是拿别人的轮子来用。而自定义方法 string2int() 就属于从头到尾的造轮子了。一想到这,是不是感觉自己开始变牛逼了?

其实,如果你肯扒拉源码的话,就会恍然大悟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值