黑马程序员技术交流社区

标题: int 和 Integer的区别是什么 [打印本页]

作者: 王龙彪    时间: 2012-7-22 14:15
标题: int 和 Integer的区别是什么
本帖最后由 王龙彪 于 2012-7-22 14:19 编辑
  1. public class ClassTest
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         compareInt();
  6.     }
  7.    
  8.     //int 和 Integer 的区别
  9.     public static void compareInt()
  10.     {
  11.         int x = 4;
  12.         Integer y = 8;
  13.         Class c1 = int.class;
  14.         Class c2 = Integer.class;
  15.         sop("int.class:", c1);
  16.         sop("Integer.class:", c2);
  17.     }

  18.     public static void sop(Object... object)
  19.     {
  20.         for(Object o : object)
  21.             System.out.print(o);
  22.         
  23.         System.out.println();
  24.     }

  25. }
复制代码
输出结果是:
int.class:int
Integer.class:class java.lang.Integer


int 和 Integer使用的不是一个class文件吗?
还有那个class字段哪来的啊?Object类里没有,API里也没找到


作者: 李东升    时间: 2012-7-22 14:33
int 是基本数据类型,声明使用直接int 变量名=值就可以了。
Integer是int的封装类型,声明必须用new关键字Integer 变量名= new Integer(值),从这里可以看出int是基本类型,而Integer是对象,也就是类的实例,

作者: 李菁    时间: 2012-7-22 14:40
int是基本数据类型,直接存数值。Integer是对象,用一个引用指向这个对象。Integer是int的封装类
int和Integer不能够互用,因为他们两种不同的数据类型
作者: 徐帅    时间: 2012-7-22 15:17
int是基本数据类型,Integer是其包装类,java是面向对象的语言,所以将基本数据类型
进行包装成一个类,操作更灵活方便,其他相应的包装类有,short -Short,char-character
byte-Byte,long-Lang,float-Float,double-Double,blooean-Blooean
在这些包装类中提供了一些静态方法对基本类型
数据进行操作,特别是在在各种数据类型转化时,
例如Integer类中提供了将字符与为int型数据互相转化的的方法,parseInt(),和toString()方法
int num = Integer.parseInt("88");还有进制的转化方法valueOf()
int num2 = Integer.valueOf(String s, int radix);
当然在jdk1.5之后 有了自动装箱与拆箱,实现了Integer与int数据之间的自动转换
比如 :Integer x = new Integer(4) ; 与  Integer x = 4 ;(自动装箱)是等价的
x = x +2 ;(自动拆箱) 变成了 int类型。
作者: 王璐    时间: 2012-7-22 15:30
从头跟你说下,
Class('c'要大写)类是一个描述java类的类,比如说你要描述一个学生,可以定义一个Student类,
在java中万物皆对象,那么什么类来描述这个Student类,就是这个Class类。
Class类的实例是一份内存中的字节码文件(绝不是源代码编译后的.class文件)。以下是API的述:

Class 类的实例表示正在运行的 Java 应用程序中的类和接口。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。

int.class和Integer.class绝不是一个。





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