簡體   English   中英

Java中“0”有什么作用?

[英]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"

我們來看看ASCII圖表 在此輸入圖像描述

您可以看到Dec值為'0' - >'9'

charAt()方法只獲取字符,在計算時自動轉換為int值。

'0' -> 48
'1' -> 49
...
'9' -> 57

在減去'0'之后:

'0' - '0' -> 48 - 48 = 0
'1' - '0' -> 49 - 48 = 1
...
'9' - '0' -> 57 - 48 = 9

畢竟, 'n' - '0'= n ,n是數字字符

number.charAt(i + j)刪除0將以數字(或integer )的形式給出相同的字符。

當您在任何表達式中使用字符時,該字符將被其ASCII值替換。

'0' (字符0)的ASCII值為48,ASCII值為'1' (字符0)為49

現在,如果number.charAt(i + j)'1'那么在你的表達式中, '1'被49替換, '0'被48替換,結果將給你1integer )。

字符和整數實際上是相同的,因為每個字符都有一個代碼(ASCII,但在某些情況下也是Unicode)。

通過從字符串中的任何數字減去'0' ,您將獲得該整數的實際值。

'0' > 48
48 - 48 = 0 (integer value)

這同樣適用於所有其他整數。 你可以用其他字符做類似的事情,比如letter - 'A' ,根據字母在字母表中的位置為每個字母分配一個數字。

'0'是零值的char值。

當您編寫一個字符串時,您正在編寫一個'char'數據類型數組,編譯器將其轉換為ASCII值(具有相應的十進制數值)。

你打電話時

number.charAt(i + j);

您實際上是在生成ASCII值。

http://www.asciitable.com/

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM