我试图找到一个数字中的所有数字的产品,我将它们存储为一个字符串(由于int和长度的限制)。Java中'0'做什么?
所以数量看起来是这样的:
final String number = "1234567898765432123......etc"
如果我用这个代码,它的工作原理:
product *= number.charAt(i + j) - '0';
它不会,如果我去掉 '0'。
我从另一个在线资源获取了此代码。有人可以解释'0'是什么吗?
我试图找到一个数字中的所有数字的产品,我将它们存储为一个字符串(由于int和长度的限制)。Java中'0'做什么?
所以数量看起来是这样的:
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 table来查找数字。
请注意,'0'
是字符0
,而不是字符串"0"
包含字符'0'
。
字符和整数实际上是相同的东西,因为每个字符都有一个代码(ASCII,但在某些情况下也是Unicode)。
通过从字符串中的任意数字中减去'0'
,即可得到该整数的实际值。
'0' > 48
48 - 48 = 0 (integer value)
这同样适用于所有其他整数。您可以使用其他字符做类似的事情,例如letter - 'A'
,根据字母在其中的位置为每个字母分配一个数字。
字符存储为数字。例如,在ASCII中'0'等于48。所以,如果你想要一个字符转换为整数,你必须删除“0”(或删除48人的工作方式相同):
product *= number.charAt(i + j) - 48;
“0”是char值为零。
当你编写一个字符串时,你正在编写一个'char'数据类型的数组,它被编译器转换成ASCII值(它具有相应的十进制数值)。
当你调用
number.charAt(i + j);
你实际上是产生ASCII值。
'0' 的ASCII值是:
'1':
。 。 。
'9':
所以,当你调用
number.charAt(i + j) - '0';
你实际上运行的ASCII值的操作零下48是它的实际价值为整数。
例如
( '9' - '0')=(57 - 48)=(9 - 0)= 9
卸下从number.charAt(i + j)
0
会给你在数字(或integer
)的形式相同的字符。
当您在任何表达式中使用字符时,该字符将被其ASCII
值替换。为'0'
(字符0)
ASCII值是48 为'1'
(字符0)ASCII值是49
现在,如果number.charAt(i + j)
是'1'
然后在表达'1'
由49和'0'
代替由48取代这会给你1
(integer
)。
这些ascii字符可以被转换为整数。这些都是ascii表上的索引,所以请检查并获得第二个想法,我想你会得到它;) – Stefan