黑马程序员技术交流社区
标题:
Class类,求指教
[打印本页]
作者:
阿凡提不买驴
时间:
2013-8-1 22:58
标题:
Class类,求指教
本帖最后由 阿凡提不买驴 于 2013-8-4 12:20 编辑
System.out.println(int.class.isPrimitive());
System.out.println(int.class==Integer.class);
System.out.println(int.class==Integer.TYPE);
这三者之间有啥区别?
作者:
张云杰
时间:
2013-8-1 23:03
System.out.println(int.class.isPrimitive()); // 判断是不是基本数据类型 true
System.out.println(int.class==Integer.class); //基本数据类型跟封装类型不等... false
System.out.println(int.class==Integer.TYPE); //由于不等, 所以Inter提供了一个int的基本类型实例, 叫做Integer.Type 所以是true
作者:
Rainbow
时间:
2013-8-2 00:42
System.out.println(int.class.isPrimitive()); 判断是不是基本数据类型
System.out.println(int.class==Integer.class); 基本数据类型跟封装类型不相等
System.out.println(int.class==Integer.TYPE); Integer.TYPE代表的是它所包含的那个基本类型的字节码,所以就相等了
作者:
米中之玉
时间:
2013-8-2 08:08
先说一下Class类吧。我们用到的类不是都被加载到方法区了吗,在内存中,那么就会被解析成二进制代码,也成为字节码,而Class类指的就是该类对应的字节码。
System.out.println(int.class.isPrimitive());//将int对应的字节码与八个基本数据类型和void类型对应的字节码相比较,只要和其中一个相等,就返回true;多不一样的话,则返回false。相当于查看元素是否属于集合,此处属于集合,所以为true。
System.out.println(int.class==Integer.class);//因为基本数据类型int和Integer类不是同一个类型,所以会被解析为不同的字节码。所以打印结果为false。
System.out.println(int.class==Integer.TYPE);//基本数据类型对应的类类型基本上都有对应的成员变量或方法TYPE类返回其基本数据类型对应的字节码。我感觉也许就是为了反射用的吧。所以为true。
作者:
一个铃,一颗珠
时间:
2013-8-2 09:56
首先.class是获取字节码的方法,基本的 Java 类型int和包装类Integer的字节码是不同的所以int.class==Integer.class是不同的,打印为false。
Integer.TYPE 解释 .TYPE是Integer的静态字段表示基本类型 int 的 Class 实例,返回Class<Integer>,int.class==Integer.TYPE是相同的打印为true。
int.class.isPrimitive()中isPrimitive()是Class类当中的一个方法 判定指定的 Class 对象是否表示一个基本类型。int是一个基本类型,打印出来为true。
可以参考jdk API 文档
作者:
阿凡提不买驴
时间:
2013-8-4 12:20
好的,O(∩_∩)O谢谢各位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2