Character,getNumericValue
Character提供的靜態方法getNumericValue(),本以為是將字元轉為int的方法,但在研讀java 8 doc後發現並非如此,描述如下
Returns the int
value that the specified Unicode character represents.For example, the character '\u216C'
(the roman numeral fifty) will return an int with a value of 50.
返回指定Unicode字符表示的int值,查詢'\u216C'發現有Unicode Data這個東西,當中有多個properties其中ㄧ項就是Numeric為50,其為羅馬數字L代表數字50的意涵,
例如:'\u2166'為字符Ⅶ,ㄧ般我們知道他代表羅馬數字7,透過getNumericValue()可以得到7。
其它說明:
- A-Z不論大小寫、全形半形由getNumericValue()得到的皆為10-35,例如:A或a得到的NumericValue 為10。
- 另外該character沒有numeric value 會回傳-1,若該character不能表為非負整數(例如小數)則回傳-2。
應用範例:計算String "652" 拆開加總,6+5+2,char 數字的NumericValue等於自己
public static void main(String[] args) throws IOException {
String str = "652";
char[] strs = str.toCharArray();
int sum1=0;
int sum2=0;
int sum3=0;
for(char c :strs) {
sum1 +=Character.getNumericValue(c);
sum2 +=c;
sum3 += Integer.parseInt(String.valueOf(c));
}
System.out.println(sum1);//13
System.out.println(sum2);//157 為ASCII code 相加 54+53+50 =157
System.out.println(sum3);//13
}
Reference: