看如下代碼。
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就好了