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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁绍然 中级黑马   /  2014-5-27 12:04  /  1111 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int可以定义变量,int a,说明int也是个类。既然int和Integer都是类了,为何不用其中一个

点评

1.5版本之后的自动拆箱是不是都可以把变量直接声明为Integer,int基本用不到了么  发表于 2014-5-27 12:30
int是基本数据类型,integer 是类。  发表于 2014-5-27 12:12

5 个回复

倒序浏览
Integer是int的封装类,里面有很多进行处理的静态方法    两者的区别:  Integer是对象而int不是,内存的分配位置也不一样  int是一种基本数据类型,而Integer是相应于int的类类型,称为对象包装。    实现这种对象包装的目的主要是因为类能够提供必要的方法,用于实现基本数据类型的数值与可打印字符串之间的转换,以及一些其他的实用程序方法;    另外,有些数据结构库类只能操作对象,而不支持基本数据类型的变量,包装类提供一种便利的方式,能够把基本数据类型转换成等价的对象,从而可以利用数据结构库类进行处理。
回复 使用道具 举报 1 0

int是一个基本数据类型,它接收的是整数。

Integer可以将字符串转换成整数,然后将值赋给int接收   如下代码
int num = Integer.parseInt("3");

Integer可以将基本数据类型自动拆箱与装箱


       //这是将一个基本数据类型自动装箱,然后赋给了这个Integer对象
       Integer num =1;   
      
       //这个是拆箱。首先,num是一个Integer对象,它不支持加法运算。
       //它必须转换成基本整数类型然后再进行加法运算。
       System.out.println(num+12);
      
       Integer i3= 128;
       Integeri4 = 128;
       System.out.println(i3==i4);//false
       /* 两个数值为什么又不相等了呢?
        * IntegerCache-128~127之间的数值对象进行了缓存。《这样可以节省内存》
        * 如果装箱的数值在该范围内,它并不创建一个新对象,而是返回一个缓存中已有对象。
        * 所以值为13时,正好在该范围内,i1i2引用的是同一个对象。
        * 值为128时,在该范围以外,i3i4引用的是不同对象。*/
      
       这是一种模式叫做《享元模式




回复 使用道具 举报
一个是数据·类型,一个是类,不一样的,就像你可以吃苹果,你可以吃水果吗,不存在的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马