布衣王子

          Email:roose2008@gmail.com QQ:79212131

          我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法

          一個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。如果以下條件中至少有一個為真,則字符是一個有效數字:

          •  
            • 方法 isDigittrue,且字符(或分解的單字符)的 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)
           

          posted on 2008-09-26 12:19 草包書生 閱讀(12438) 評論(7)  編輯  收藏

          評論

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法 2008-09-26 14:07 Meatball

          把radix進制的字符轉為10進制
          int x=Character.digit('c', 16); 是把16進制的c轉為10進制=12  回復  更多評論   

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法 2008-09-26 19:02 mingj

          Integer,Float,Double都有parseXXX方法
          自然Character也不應該少這樣的方法

          至于實現原因, api已經說的很明白了  回復  更多評論   

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法[未登錄] 2008-09-26 22:53 草包書生

          哎,原來是這樣簡單的一回事,小弟真是孤陋寡聞啊!謝謝了  回復  更多評論   

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法 2009-12-22 11:08 路過

          Character.digit('c', 16),表示輸出字符'c'代表的16進制數,16進制中a、b、c、d、e、f分別表示為10、11、12、13、14、15,所有這里輸出的是12  回復  更多評論   

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法 2013-08-25 10:10 itfanr

          @路過
          沒錯~~~~~~~~  回復  更多評論   

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法 2015-02-27 14:28 陳琪琪

          @Meatball
          不對吧,如果按照你說的那樣的話,那么我把16改成8,結果應該是多少呢?  回復  更多評論   

          # re: 我被一個初學者考傻了,關于java.lang.Character.digit(char ch, int radix)方法 2015-02-27 14:35 陳琪琪

          @陳琪琪
          應該是-1  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          常用鏈接

          相冊

          java的相關連接

          最新評論

          主站蜘蛛池模板: 嘉鱼县| 柏乡县| 孙吴县| 石河子市| 赤壁市| 綦江县| 百色市| 丹阳市| 京山县| 遂宁市| 和林格尔县| 曲松县| 思南县| 楚雄市| 邯郸市| 嘉鱼县| 汽车| 沿河| 若尔盖县| 司法| 秭归县| 常山县| 黔西县| 湟源县| 项城市| 通州区| 明溪县| 临夏市| 松溪县| 武夷山市| 鱼台县| 文安县| 内丘县| 台南县| 九江市| 清河县| 玉树县| 绥德县| 宿迁市| 五寨县| 凭祥市|