2011-11-22 35 views

回答

17

虽然这个问题很清楚,我敢肯定的海报想知道为什么这个打印false

char c = '0'; 
int i = 0; 
System.out.println(c == i); 

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

为什么数字的字符代码不等于数字本身?主要是因为前几个代码,特别是0,太特殊了,不适合用于这样一个普通的目的。

+6

+1良好的心智阅读技巧 – JonH

+2

+1 ^^^年轻的杰迪,你的力量很强。 –

+0

+1正是我想到的一个很好的解释。 –

0

你的意思s是一个整数和c(从我看到的)是一个字符..所以那里你,这就是问题:Integer vs. Char comparation

6

该char c ='0'具有ascii代码48.该数字与s比较,而不是'0'。如果要比较C与S您可以这样做:

if(c == s) // compare ascii code of c with s 

如果这将是真正的C = '0' 和S = 48

if(c == s + '0') // compare the digit represented by c 
       // with the digit represented by s 

这将是如果c ='0'且s = 0,则返回true。

1

char和int值不能直接比较我们是否需要应用投射。因此,需要铸造焦炭串和串后,将收杆成整数

char c='0'; 
int i=0; 

答案是像

String c = String.valueOf(c); 

System.out.println(Integer.parseInt(c) == i) 

它将返回true;

希望它会帮助你

感谢

相关问题