问题
怎么将字符串转换为int?
解答
此题看似简单,但经常出现在笔试等地方,由于大家习惯了用IDE,有什么还真未必能写出来。通常都是parseInt()方法进行转换,如下:
Int n = Integer.parseInt("123");
发散思考
1.除了parseInt()方法外,还有什么其它方法可以让String转换为int吗?float、double、long、short那些又是怎么从String转换的?
解答:除了parseInt()方法以外,还可以用valueOf()方法。如下皆可:
int i2 = Integer.valueOf(intString);
int i3 = Integer.valueOf(intString).intValue();
对于float、double、long、short等,都有对应的parse方法,和valueOf()可用。
2.parseInt()和valueOf()有什么不一样?
解答:看Integer的API文档,可以知道:
从文档中可以看出,parseInt()返回int型,而valueOf()返回Integer。当valueOf()返回的值直接付给int的时候,JRE会自动处理转换,也可以指明用Integer.intValue()方法来转化。故第一题上两条语句都行。
3.包装类怎么转换基本类?
解答:此处就用到第二题提到的intValue()方法了。如
如Long转换int:Long l = 10L; int I = l.intValue();
其他的转化同理。
参考代码:
package me.huangzijian; public class ConvertExample { public static void main(String[] args) {
String intString = "123";
int i1 = Integer.parseInt(intString);
int i2 = Integer.valueOf(intString);
int i3 = Integer.valueOf(intString).intValue();
Long l = 123L;
int i4 = l.intValue();
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
}
}