简体   繁体   中英

Why doesn't my compare work between char and int in Java?

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

Why does this always returns false?

Although this question is very unclear, I am pretty sure the poster wants to know why this prints false :

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

The answer is because every printable character is assigned a unique code number, and that's the value that a char has when treated as an int . The code number for the character 0 is decimal 48, and obviously 48 is not equal to 0.

Why aren't the character codes for the digits equal to the digits themselves? Mostly because the first few codes, especially 0 , are too special to be used for such a mundane purpose.

The char c = '0' has the ascii code 48. This number is compared to s, not '0'. If you want to compare c with s you can either do:

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

This will be true if c = '0' and s = 48.

or

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

This will be true if c = '0' and s = 0.

The char and int value can not we directly compare we need to apply casting. So need to casting char to string and after string will pars into integer

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

Answer is like

String c = String.valueOf(c);

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

It will return true;

Hope it will help you

Thanks

您是说s是一个整数,而c (从我的角度来看)是一个Char ..所以在那里,这就是问题所在: Integer vs. Char comparation

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM