Java中“0”有什么作用?

时间:2015-12-22 06:46:55

标签: java

我正在尝试查找数字中所有数字的乘积,我将其存储为字符串(由于int和长度限制)。

所以数字看起来像这样:

da.Update(dt);

如果我使用此代码,它可以工作:

final String number = "1234567898765432123......etc"

如果我删除'0'则不会。

我从另一个在线资源获得此代码。有人可以解释'0'的作用吗?

6 个答案:

答案 0 :(得分:9)

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'

答案 1 :(得分:5)

让我们检查ASCII图表enter image description here

你可以看到'0'的Dec值 - > '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是数字字符

答案 2 :(得分:2)

0移除number.charAt(i + j)会以数字形式(或integer)为您提供相同的字符。

当您在任何表达式中使用字符时,该字符将被其ASCII值替换。

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

现在,如果number.charAt(i + j)'1',则表达式'1'中的'0'将替换为49,而1将替换为48,这将为您提供integerEmailFormat += "<table><thead><tr><th>FirstName</th><th>LastName</th><th>Id</th><th>Date</th></thead>" + string.Concat(Review.Select(_ => _.{Anything})) + "</table>"; )结果。

答案 3 :(得分:1)

字符和整数几乎是一回事,因为每个字符都有一个代码(ASCII,但在某些情况下也是Unicode)。

通过从字符串中的任何数字中减去'0',您将获得该整数的实际值。

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

这同样适用于所有其他整数。您可以使用其他字符执行类似的操作,例如letter - 'A',根据字母在字母表中的位置为每个字母指定一个数字。

答案 4 :(得分:1)

'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的操作,这是一个整数的实际值。

e.g。

('9' - '0')=(57 - 48)=(9 - 0)= 9

答案 5 :(得分:0)

字符存储为数字。 例如,'0'等于ASCII中的48。因此,如果要将字符转换为整数,则必须删除“0”(或删除48将以相同的方式工作):

product *= number.charAt(i + j) - 48;

更多信息:http://www.asciitable.com

相关问题