黑马程序员技术交流社区

标题: java中Integer与Int具体的区别是什么? [打印本页]

作者: limengpiao    时间: 2014-9-10 15:42
标题: java中Integer与Int具体的区别是什么?
如题,麻烦各位朋友有时间的话帮我解答下
作者: however_    时间: 2014-9-10 17:15
int是基本数据类型,Integer是基础数据类型包装类。
作者: however_    时间: 2014-9-10 17:17
int 是基本类型,直接存数值

  integer是对象,用一个引用指向这个对象

  1.Java 中的数据类型分为基本数据类型和复杂数据类型

  int 是前者>>integer 是后者(也就是一个类)

     Integer 是对象类型 int是原始类型 适用场合有很大的不同 之所以要把int封装成Integer 型 是因为很多方法参数就只接收对象类型(Object) 还比如 范型 就只支持 对象类型

例如往ArrayList里面add,必须add的是Object而int不是对象,就只能把Integer添加进去

  2.初始化时>>

  int i =1;

  Integer i= new Integer(1);(要把integer 当做一个类看)

  int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充)

  Integer 是一个类,是int的扩展,定义了很多的转换方法

  类似的还有:float Float;double Double;string String等

  举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。

  Java中每种内建类型都有相应的外覆类。

  Java中int和Integer关系是比较微妙的。关系如下:

  1.int是基本的数据类型;

  2.Integer是int的封装类;

  3.int和Integer都可以表示某一个数值;

  4.int和Integer不能够互用,因为他们两种不同的数据类型;

  举例说明

  ArrayList al=new ArrayList();

  int n=40;

  Integer nI=new Integer(n);

  al.add(n);//不可以

  al.add(nI);//可以


作者: likeermei    时间: 2014-9-10 22:25
int是基本类型,integer是对象类型,是int的包装类
-128——127之间的integer和intent可以自动转换,也就是在内存中开辟了一个8位的空间在词区间内java提供自动拆箱和自动装箱
作者: happymouse    时间: 2014-9-10 23:12
likeermei 发表于 2014-9-10 22:25
int是基本类型,integer是对象类型,是int的包装类
-128——127之间的integer和intent可以自动转换,也就是 ...

int类型的都可以自动装箱和拆箱的,不仅是-127---+128哦
作者: likeermei    时间: 2014-9-10 23:30
happymouse 发表于 2014-9-10 23:12
int类型的都可以自动装箱和拆箱的,不仅是-127---+128哦

-127---+128  那这个是什么来着,记得视频里面提到过?
作者: 笑脸迷人    时间: 2014-9-10 23:34
记得享元模式就好了~
作者: happymouse    时间: 2014-9-10 23:36
likeermei 发表于 2014-9-10 23:30
-127---+128  那这个是什么来着,记得视频里面提到过?

那个是一个字节8位的取值范围
作者: ulopllo    时间: 2014-9-10 23:42
however_ 发表于 2014-9-10 17:17
int 是基本类型,直接存数值

  integer是对象,用一个引用指向这个对象

学习啦~谢谢了 之前也一直没有搞懂这个问题~
作者: zz_job    时间: 2014-9-10 23:44
这个。。简单来说  int表示int类型的变量,int和其它几种基本数据类型的数据,都不是对象。所以说Java中并不是所有的东西都是对象。但是不是对象有些时候操作起来就不方便 ,因此将这些基本数据类型的变量封装成了Integer类,也就成了对象了。操作起来就方便了。Integer就是普通的类,只不过操作的是基本数据类型的变量。
作者: however_    时间: 2014-9-10 23:48
likeermei 发表于 2014-9-10 23:30
-127---+128  那这个是什么来着,记得视频里面提到过?

是不是在说 byte 取值范围?
作者: likeermei    时间: 2014-9-10 23:53
however_ 发表于 2014-9-10 23:48
是不是在说 byte 取值范围?

记得不是很清楚了,明天晚上给出答案,睡觉了,明天还得上班呢
作者: however_    时间: 2014-9-11 00:00
ulopllo 发表于 2014-9-10 23:42
学习啦~谢谢了 之前也一直没有搞懂这个问题~

int 是基本数据类型
Integer是其包装类,注意是一个类。
提供包装类一是为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化。
比如,现在int要转为String
int a=0;
String result=Integer.toString(a);
在java中包装类,比较多的用途是用在于各种数据类型的转化中。
作者: ulopllo    时间: 2014-9-11 00:02
however_ 发表于 2014-9-11 00:00
int 是基本数据类型
Integer是其包装类,注意是一个类。
提供包装类一是为了在各种类型间转化,通过各种 ...

噢~了解了~这个例子看着更生动了~谢谢哈
作者: however_    时间: 2014-9-11 00:04
ulopllo 发表于 2014-9-11 00:02
噢~了解了~这个例子看着更生动了~谢谢哈

:)哈哈,共同进步
作者: 戏言丶    时间: 2014-9-11 00:10
我是来学习的
作者: Fightin黑马    时间: 2014-9-11 16:39
二楼说的很明白哦
作者: 进击的大鹏    时间: 2014-9-11 21:33
int基本数据类型,Integer引用数据类型




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