看如下代码。
class test02
{
public static void main(String[] args)
{
char s2='a';
String s1="12";
double x=Double.parseDouble(s1);
int y=(int)s2;//Integer.parseInt(s2);
System.out.println(x+y);
}
}
结果是109.0
如果使用Integer.parseInt(s2);
却会报错
但是下面的代码
class test02
{
public static void main(String[] args)
{
String s1="0.5",s2="12";
double x=Double.parseDouble(s1);
int y=Integer.parseInt(s2);//(int)s2;
System.out.println(x+y);
}
}
输出结果是12.5 使用(int)就会报错这是为什么呢
首先我们来看看parseint()的参数是怎么定义的
static int parseInt(String s)
将字符串参数作为有符号的十进制整数进行分析。
static int parseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
所以chars是字符型不能够用parseint()方法。
然而大家不是问(int)x怎么可以把一个不是本身就不是Int的数据强制转为Int呢,在java中char是可以强制转为int的,转过来是ASCII 比如a就是97
而第二个本来就是string所以直接interger.parseint成int就好了