为什么我在Java中使用char和int进行比较?

sas*_*och 0 java if-statement

char c = '0';
int i = 0;
System.out.println(c == i);
Run Code Online (Sandbox Code Playgroud)

为什么这总是返回false?

Ern*_*ill 20

虽然这个问题很不清楚,但我很确定海报想知道为什么会这样打印false:

char c = '0';
int i = 0;
System.out.println(c == i);
Run Code Online (Sandbox Code Playgroud)

答案是因为每个可打印字符都被分配了一个唯一的代码编号,这就是char当被视为一个时所具有的值int.字符的代码号0是十进制48,显然48不等于0.

为什么数字的字符代码不等于数字本身?主要是因为前几个代码,特别0是太特殊,不能用于这样一个世俗的目的.

  • +1 ^^^你的力量很强,年轻的绝地武士. (3认同)

Tud*_*dor 7

char c ='0'具有ascii代码48.该数字与s进行比较,而不是'0'.如果你想将c与s进行比较,你可以这样做:

if(c == s) // compare ascii code of c with s
Run Code Online (Sandbox Code Playgroud)

如果c ='0'且s = 48,则为真.

要么

if(c == s + '0') // compare the digit represented by c 
                 // with the digit represented by s
Run Code Online (Sandbox Code Playgroud)

如果c ='0'且s = 0,则为真.