黑马程序员技术交流社区

标题: char和int类型作比较 [打印本页]

作者: 仲伟    时间: 2013-5-12 11:27
标题: char和int类型作比较
本帖最后由 仲伟 于 2013-5-12 19:49 编辑

char c = 1;
char c1 ='1';
int n =1;
三个数值作比较
System.out.println(c==c1);
System.out.println(c==n);
System.out.println(n==c1);

为什么不一样,我很不明白,最好给我,这三个的二进制码,给我讲讲明白
作者: hou604720966    时间: 2013-5-12 11:43
char c = 1;//这个是ASCII码表中十进制1的对应字符
char c1 ='1';//这个是字符1
int n =1;//这是是十进制1
作者: 仲伟    时间: 2013-5-12 11:46
String str ="abcdekka27qoq";
                HashSet hs = new HashSet();
                char[] chars=new char[str.length()];
                for(int i=0;i<str.length();i++){
                        char c1=str.charAt(i);
                        if(c1!=2&&c1!=7){
                                System.out.print(c1+"---");
                        hs.add(str.charAt(i));
                        }
                }
这个if的判断条件怎么正确的呢,我想要数字就想要 字符
作者: 飞鸟青崖    时间: 2013-5-12 12:39
把if判断语句改成: if(c1!='2' && c1!='7')就行了。不然你那c1代表的是字符,而2代表的是数字。
作者: 黑马-王双    时间: 2013-5-12 13:01
char c1='1';       字符1,对应的ascII码值是49,二进制是00000000 00110001
int n=1;  整数1,二进制为00000000 00000000 00000000 00000001
char c=1; 二进制00000000 00000001
把整数1赋给c,是在将一个大的数据类型变成一个小的数值类型,int占4个8位,char只有2个8位
但是因为1的二进制存储时没有超过两个8位,所以不会损失精度。
所以c==n is true

作者: 神之梦    时间: 2013-5-12 13:24
楼上正解,这是我用程序检验的二进制:

结果为:

结果显示c和n的值是一样的,但是因为两个数据类型不同、字节长度不同,数值大小自然也不同,结果只是没有把两值前面的0全部显示出来而已




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2