Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是';0';你喜欢Java吗?_Java - Fatal编程技术网

什么是';0';你喜欢Java吗?

什么是';0';你喜欢Java吗?,java,Java,我试图找到一个数字中所有数字的乘积,我将其存储为字符串(由于int和长长度限制) 因此,数字如下所示: final String number = "1234567898765432123......etc" 如果我使用此代码,它可以工作: product *= number.charAt(i + j) - '0'; 如果我删除“0”,则不会发生错误 我从另一个在线资源获得了这个代码。有人能解释一下“0”的作用吗?Ascii字符实际上是数字。和0。。9数字是从十进制48(0x30十六进制)开

我试图找到一个数字中所有数字的乘积,我将其存储为字符串(由于int和长长度限制)

因此,数字如下所示:

final String number = "1234567898765432123......etc"
如果我使用此代码,它可以工作:

product *= number.charAt(i + j) - '0';
如果我删除“0”,则不会发生错误


我从另一个在线资源获得了这个代码。有人能解释一下“0”的作用吗?

Ascii字符实际上是数字。和
0。。9
数字是从十进制48(0x30十六进制)开始的数字

因此,要获得任何字符数字的值,只需删除“0”,即48

'1' - '0' => 1
 49 -  48 => 1
如果不删除“0”(48),则总和将超过
48*numberOfDigits

请参阅以查找其中的数字


请注意,
'0'
是字符
0
,而不是包含字符
'0'
的字符串
'0'
,字符和整数实际上是一样的,因为每个字符都有一个代码(ASCII,但在某些上下文中也有Unicode)

通过从字符串中的任何数字减去
'0'
,可以得到该整数的实际值

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

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

让我们检查一下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是一个数字字符

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


更多信息:

'0'是零的字符值

编写字符串时,您正在编写一个“char”数据类型数组,编译器将其转换为ASCII值(具有相应的十进制数值)

当你打电话的时候

number.charAt(i + j);
number.charAt(i + j) - '0';
实际上,您正在生成一个ASCII值

“0”的ASCII值为:

四十八

“1”:

49

。 .

‘9’:

57

所以当你打电话的时候

number.charAt(i + j);
number.charAt(i + j) - '0';
实际上,您正在运行一个ASCII值减去48的操作,它的实际值是一个整数

e、 g


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

数字中删除
0
。字符(i+j)
将以数字(或
整数
的形式提供相同的字符

在任何表达式中使用字符时,该字符将替换为其
ASCII

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


现在,如果
number.charAt(i+j)
'1'
,那么在表达式中,
'1'
被49替换,
'0'
被48替换,这将为您提供
1
整数
)结果。

这些ascii字符可以转换为整数。这些是ascii表上的索引,所以请检查并重新考虑一下,我想您会得到它;)