在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() 就属于从头到尾的造轮子了。一想到这,是不是感觉自己开始变牛逼了?
其实,如果你肯扒拉源码的话,就会恍然大悟。