[英]What does '0' do in Java?
我試圖找到一個數字中所有數字的乘積,我將其存儲為一個字符串(由於int和長度限制)。
所以數字看起來像這樣:
final String number = "1234567898765432123......etc"
如果我使用此代碼,它的工作原理:
product *= number.charAt(i + j) - '0';
如果我刪除'0'則不會。
我從另一個在線資源獲得此代碼。 有人可以解釋'0'的作用嗎?
Ascii字符實際上是數字。 0 .. 9
位數是從小數48開始的數字(0x30十六進制)。
'0' is 48
'1' is 49
...
'9' is 57
因此,要獲得任何字符數字的值,您可以刪除'0',即48。
'1' - '0' => 1
49 - 48 => 1
如果你不刪除'0'(48),總和將超過48 * numberOfDigits
。
請參閱ascii表以查找其中的數字。
注意, '0'
是字符0
,而不是包含字符'0'
的字符串"0"
。
從number.charAt(i + j)
刪除0
將以數字(或integer
)的形式給出相同的字符。
當您在任何表達式中使用字符時,該字符將被其ASCII
值替換。
'0'
(字符0)的ASCII值為48,ASCII值為'1'
(字符0)為49
現在,如果number.charAt(i + j)
為'1'
那么在你的表達式中, '1'
被49替換, '0'
被48替換,結果將給你1
( integer
)。
字符和整數實際上是相同的,因為每個字符都有一個代碼(ASCII,但在某些情況下也是Unicode)。
通過從字符串中的任何數字減去'0'
,您將獲得該整數的實際值。
'0' > 48
48 - 48 = 0 (integer value)
這同樣適用於所有其他整數。 你可以用其他字符做類似的事情,比如letter - 'A'
,根據字母在字母表中的位置為每個字母分配一個數字。
'0'是零值的char值。
當您編寫一個字符串時,您正在編寫一個'char'數據類型數組,編譯器將其轉換為ASCII值(具有相應的十進制數值)。
你打電話時
number.charAt(i + j);
您實際上是在生成ASCII值。
ASCII值'0'是:
48
'1':
49
。 。 。
'9':
57
所以當你打電話
number.charAt(i + j) - '0';
您實際上正在運行ASCII值減去48的操作,這是它作為整數的實際值。
例如
('9' - '0')=(57 - 48)=(9 - 0)= 9
字符存儲為數字。 例如,'0'等於ASCII中的48。 因此,如果要將字符轉換為整數,則必須刪除“0”(或刪除48將以相同的方式工作):
product *= number.charAt(i + j) - 48;
更多信息: http : //www.asciitable.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.