一個java初學者在看大連理工大學出版社出版的書(書名是《java面向對象程序設計》)時向我問了下面這樣一個問題。 為什么:
int x=Character.digit('c', 16);
System.out.println("x="+x);
結果輸出為 F12
作者楊興凱在不在博客圓,應該拉出來打。
這樣的錯誤也犯,還寫書。我想我也可以寫書了。這也是個小問題,經過程序驗證結果應該是12。上面兩句代碼的執行過程小弟有些含糊不清,上面的兩句執行過程是將c的十進制減去a的十進制然后加上10。
這個方法是用來做什么的呢?
雖然小弟要弄清楚了上面的輸出結果是怎樣出來的,但是我不懂這樣比較后有加又減的到底有什么意義,這個方法在那些地方可能會用到。就連下面的API我也一點也看不懂,難道這個方法是用來做大小寫轉換的嗎?能不能舉一個這個方法實際應用的實例呢?
java.lang.Character.digit(char ch, int radix)API
public static int digit(char ch,
int radix)
- 返回使用指定基數的字符
ch
的數值。
如果基數不在 MIN_RADIX
<= radix
<= MAX_RADIX
范圍之內,或者 ch
的值是一個使用指定基數的無效數字,則返回 -1
。如果以下條件中至少有一個為真,則字符是一個有效數字:
-
- 方法
isDigit
為 true
,且字符(或分解的單字符)的 Unicode 十進制數值小于指定的基數。在這種情況下,返回十進制數值。
- 字符為
'A'
到 'Z'
范圍內的大寫拉丁字母之一,且它的代碼小于 radix + 'A' - 10
。在這種情況下,返回 ch - 'A' + 10
。
- 字符為
'a'
到 'z'
范圍內的小寫拉丁字母之一,且它的代碼小于 radix + 'a' - 10
。在這種情況下,返回 ch - 'a' + 10
。 (這里我一點也看不懂)
注:此方法無法處理增補字符。若要支持所有 Unicode 字符,包括增補字符,請使用 digit(int, int)
方法。
-
-
- 參數:
ch
- 要轉換的字符。
radix
- 基數。
- 返回:
- 使用指定基數的字符所表示的數值。
- 另請參見:
forDigit(int, int)
, isDigit(char)
-