首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

深入【Java】底层细节知识点(6)int和Integer的区别

深入【Java】底层细节知识点(6)int和Integer的区别

intI
nteg
er


基本区别:
  • (1)Integer是int的包装类;int是基本数据类型;
  • (2)Integer变量必须实例化后才能使用;int变量不需要;
  • (3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
  • (4)Integer的默认值是null;int的默认值是0。
深入比较:
package com.nuc;public class Demo {    public static void main(String[] args) {        Integer i1 = new Integer(1);        Integer i2 = new Integer(1);        Integer i3 = 1;        Integer i4 = 127;        Integer i5 = 127;        Integer i6 = 128;        Integer i7 = 128;        int i8 = 1;        //1、直接比较时,比较两者的地址,每次new生成的都是新的对象        System.out.println(i1==i2);//false        //2、integer和int比较时会自动拆箱转换为int类型,然后比较两者的值        System.out.println(i1==i8);//ture        //3、非new生成i3指向的是java常量池的对象,new是新生成的        System.out.println(i1==i3);//false        //4、127和128问题,JavaAPI中对Integer定义:在-128到127(含)之间的数会缓存,只存在一个对象中,即在此创建只是从缓存中取            //超过这个每次创建就会new,即产生新的对象        System.out.println(i4==i5);//true        System.out.println(i6==i7);//false    }}
以上是测试结果
返回列表