黑马程序员技术交流社区

标题: 问题已经解决System.out.println(int.class==char.class);报错 [打印本页]

作者: 郑彬    时间: 2012-8-15 14:39
标题: 问题已经解决System.out.println(int.class==char.class);报错
本帖最后由 郑彬 于 2012-8-15 23:20 编辑

System.out.println(int.class==char.class);
类实例不是可以比较吗?因为是字节码比较啊?但是我这样写编译器尽然报错。还说什么类型不匹配。
是不是自己的MyEclipse版本的问题?我是10.0版本的。
视频上没错啊。
作者: 李知伦    时间: 2012-8-15 14:50
基本类型是没有类的,自动提升至各自的包装类 Integer和Character,类不同,不能比较
作者: pphdsny3    时间: 2012-8-15 15:08
他们之间的比较用System.out.println(int.class.equals(char.class));就没有什么问题了
作者: 王程    时间: 2012-8-15 15:48
类型不同,无法比较incomparable types: java.lang.Class<java.lang.Integer> and java.lang.Class<java.lang.Character>
如果你想要比较字节码文件是否是同一份,可以这样写
Class c1=int.class;
Class c2=char.class;
System.out.println(c1==c2);
此时比较的是变量c1和c2是否指向同一份字节码,比较的是c1和c2指向的地址,因为在内存中一个类的字节码文件只有一份,不会重复加载,所以可以通过比较引用变量指向的地址来得出结论
作者: 陈红建    时间: 2012-8-15 19:31
System.out.println((Class)int.class == (Class)char.class);

作者: 郑彬    时间: 2012-8-15 23:20
问题已经解决




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