int和Integer区别,为什么有了int还要有Integer
目录
- int和Integer的区别
- int和Integer的比较
- 有了int为什么还要有Integer
- 补充:Integer的装箱和拆箱
int和Integer的区别
- int是Java的基本数据类型,长度为32位(4)字节;Integer是Java提供的封装类,在java.lang.Integer包里面。
- int默认值为0;而Integer默认值是null。
- Integer是对象的引用,必须实例化后才能使用;int则不需要。
- new一个Integer实际是生成一个指针指向此对象;而int则是直接存储数据值。
int和Integer的比较
//1.Integer和int比较
int i1 = 24;
Integer i2 = 24;
Integer i3 = new Integer(24);
System.out.println(i1 == i2);//true
System.out.println(i1 == i3);//true
//Integer和int比较时,会自动拆箱为int,比较的是两个的值,所以为true//2.Integer和Integer比较
Integer i4 = 100;
Integer i5 = 100;
System.out.println(i4 == i5);//true
Integer i6 = 128;
Integer i7 = 128;
System.out.println(i6 == i7);//false
//编译时翻译成:Integer i4 = Integer.valueOf(100);
//如果两个变量的值在区间-128到127之间,则比较结果为true
//如果两个变量的值不在此区间,则比较结果为false//3.Integer和 new Integer比较
Integer i8 = 100;
Integer i9 = new Integer(100);
System.out.println(i8 == i9);//false
//非new生成的Integer变量指向的是java常量池中的对象
//new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同//4.new Integer和new integer比较
Integer i10 = new Integer(1000);
Integer i11 = new Integer(1000);
System.out.println(i10 == i11); //false
//比较的是内存地址,所以不相等
关于第二点需要补充说明,对于-128到127之间的数,程序会进行缓存,Integer i4 = 100时,会将100进行缓存,下次再写Integer i5 = 100时,就会直接从缓存中取,就不会new了。为什么会进行有范围的缓存,和valueOf()有关,可以看一下valueOf()的源代码
public static Integer valueOf(int i){assert IntegerCache.high >= 127;if (i >= IntegerCache.low && i <= IntegerCache.high){return IntegerCache.cache[i + (-IntegerCache.low)];}return new Integer(i);
}
有了int为什么还要有Integer
- 因为Java语言是面向对象的,对象封装可以把属性(数据跟处理这些数据的方法)结合在一起。比如Integer就有parseInt()等方法来专门处理int型相关的数据。
- 在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList和LinkedList集合类就只能以类作为它的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类,也就是Integer才能被List所接受。
补充:Integer的装箱和拆箱
- 自动装箱
将基本数据类型转化为对象
Integer i=100;
//等价于Integer num = Integer.valueOf(100);
- 自动拆箱
将对象转化为基本数据类型
Integer i = 100;/ /声明一个Integer对象
i++;// 进行计算时自动拆箱
int和Integer区别,为什么有了int还要有Integer相关推荐
- java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)
Java基本数据类型与封装类型详解(int和Integer区别) 发布于 2020-4-19| 复制链接 摘记: int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Int ...
- java 封装表单数据类型_Java基本数据类型与封装类型详解(int和Integer区别)
int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...
- int和Integer区别
Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper cl ...
- Java基础:int与Integer区别
int与Integer的基本使用对比 Integer是int的包装类:int是基本数据类型: Integer变量必须实例化后才能使用:int变量不需要: Integer实际是对象的引用,指向此new的 ...
- Java-Integer和int有什么区别
转自:https://www.cnblogs.com/mmykdbc/p/8715646.html Java的Integer和int有什么区别 Java是面向对象的编程语言,一切都是对象,但是为了编程 ...
- int(1) 和 int(10) 的区别?很多老程序都理解错了!
欢迎关注方志朋的博客,回复"666"获面试宝典 最近开发遇到一个问题,涉及到了int(1) 和 int(10) 有什么区别?三年老开发也不知道,于是自己上网 google 研究了下 ...
- mysql timestamp json_mysql中timestamp,datetime,int类型的区别与优劣
mysql中timestamp,datetime,int类型的区别与优劣 int 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mys ...
- 你知道 int(1) 和 int(10) 的区别吗?
昨天在群里(点击加群)看到有小伙伴分享了这篇文章,觉得挺不错的.顺手转载一下,一起涨知识! 困惑 最近遇到个问题,有个表的要加个user_id字段,user_id字段可能很大,于是我提mysql工单a ...
- mysql int(3)与int(11)的区别
总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果i ...
最新文章
- centos一键清理磁盘空间_磁盘空间不够用?教你一键清理电脑重复文件
- JBoss AS7 JNDI和EJB 3.1命名更改
- 想进美团不知道选哪个技术岗位?这里有一份通关秘籍!
- PX Deq: Execution Msg 等待事件
- 公司的摄像头密码要统一
- 内容太干准备好水:项目进度管理S曲线制作方法新探
- UE4 黑洞特效(C++)
- Windows 10无线网连不上怎么办-旧时光 oldtimeblog
- UE5中创建VR项目并在瞬移的基础上增加圆盘位移操作
- 荣耀30青春版怎么样?到手后远超预期!
- remount of the / superblock failed: Permission denied remount failed
- 计算机学院 统计学博士点,重大喜讯:统计学科获批一级学科博士授权点
- 随意发表见解易成无效表达
- Codeforces Round #263 (Div. 1)-A,B,C
- 解决thingsboard 二开 跨域问题
- 51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真
- PBOOTCMSV3.1.3火车头采集器7.6免登录 新闻文章发布
- PS证件照蓝底改白底?
- python使用国内源安装包
- EXCEL难题一网打尽 无意间看到的 转过来 自己看看 (二)
热门文章
- 数据结构——树|N叉树之孩子双亲表示法——顺序存储结构+链表
- Python的学习(二十一)----Python的静态变量
- MATLAB-三维插值运算
- CSDN博客专用动态图小程序的推荐---ScreentoGIF教程
- Mycat读写分离、主从切换、分库分表的操作记录 https://www.cnblogs.com/kevingrace/p/9365840.html
- Linux c 中alarm,signal,pause的使用说明
- Linux 通配符和特殊符号
- 四种连接类型:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接)
- 【Web】HTML 账号注册页面
- Latex 论文 简单常用命令例子记录