A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 知行 中级黑马   /  2013-6-16 10:48  /  1674 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int.class 和Integer.class的区别是什么啊?基本类型也是一个类吗

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

3 个回复

倒序浏览
本帖最后由 Spole_168 于 2013-6-16 10:59 编辑

Integer。class 和 int.class的区别是
一个是引用类型  对应的反射对象。
一个是原始类型  对应的反射对象。
Integer是int的封装类
jdk1.5以后就实现了自动封转。。。区别不大。。。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
先从其他说起,编程语言一般有四种基本成分组成:数据成分、运算成分、控制成分、传输成分。
对于Java语言,数据成分包括基本数据类型和复合数据类型。基本数据类型有8种boolean, byte, char, short, int, long, floatdouble。而复合数据类型包括类、接口、数组类型等。
对于基本数据类型,我有以下两种理解:
1. 面向对象的基本思想之一是将各种数据都封装成一个个的类(广义上的类),包括上面提到的基本数据类型、类、接口等,之所以在Java语言中又进一步细化,是为了编程设计的需要。但是在某些情况下,仍然可能为他们提供一些一致性的处理,比如获得它们各自对应的Class实例,如void.class,int.class,Object.class,Comparable.class等
2. 我们知道Class实例是引用(指向)内存中的一段字节码,这些字节码实际上是通过类加载器加载到内存中的,这些字节码的类型包括Java类、Java接口、Java数组的字节码;实际上8中基本数据类型和一个伪类型(pseudo-type)void也是通过类加载器加载到内存中的,也是对应内存中的一段字节码,所以必然存在这样的方式去取得这些字节码,如int.class,void.class等

言归正传,Integer是int的一个包装类,它有唯一的一个属性保存有一个int值,并且提供了int处理的一些方法,如String到int,int到String,还有其他转型处理等等。至于int.class和Integer.class,它们是两种不同类型的Class实例,没多大关系。而一个基本数据类型是一个类吗?它是一个广义的类,因为任何数据类型都可以认为是一个类,但不是Java语言规范中的类。


评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
没什么区别 一个是原生数据类型 一个是类类型 得到的都是jvm中的Integer类的Class
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马