2013-11-25 60 views
2

我想知道爲什麼char ch = 5; (例如) 是不是錯誤?但如果我打印爲什麼char ch = 4(沒有''),是不是erorr?

System.out.println(Character.isDigit(ch)); 
// output 

false 

它會是假的?

感謝所有

+0

因爲'char'是一個(16位無符號)數字。 –

+1

谷歌「ascii表」,看看你會得到的一些圖像。 「字符」(例如您現在正在閱讀的內容)每個都由數字代碼表示。數字5位於「控制代碼」部分,代表「查詢」控制代碼(這對於40歲的電傳打字機來說真的很有意義)。另一方面,字符「5」由值爲小數點的53的「char」表示。 –

+0

這是一個基本問題,但並不是一個糟糕的問題,不應該被低估。任何人都可以找到文檔或JLS中描述此行爲的位置? – iamnotmaynard

回答

5

一個字符由內存中的兩個字節表示。 Java將5轉換爲一個字符。 '5'不是ASCII表中的第6個字符(其十六進制代碼是35而不是5),因此不是「數字」。

+0

更正 - 在Java中,一個字符由一個16位數字表示。 –

+0

糟糕,你說得對,我想內存並不總是有用。 –

+1

@ArlaudAgbePierre謝謝 – user2849967

9

由於5是文字的整數可以被轉換爲一個char。然而,它不是字符'5'

1

如果你給ch = 5,它會根據ASCII值自動轉換爲字符。

4

嘗試這個例子:

char ch = 97; 
JOptionPane.showMessageDialog(null,"ch = "+ch); 

答案是:CH =一

它根本不會放棄,即使97是不(' ')因爲97代表的ASCII碼字符錯誤'a'所以它不是一個數字,這就是爲什麼你會因此而失敗。

相關問題