博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
int和Integer的区别
阅读量:5226 次
发布时间:2019-06-14

本文共 1170 字,大约阅读时间需要 3 分钟。

int和Integer的区别

int和Integer的基本区别

  1. int是基本数据类型,Integer是int包装类。
  2. Integer变量必须实例化后才能使用,int可以直接使用
  3. Integer的默认值是null,int默认值是0
  4. Integer变量实际上是对象的引用,指向new的Integer对象,int是直接存储数据

Integer的自动装箱

一般我们生成对象都是Object o = new Objectz(),但是对于Integer,我们可以Integer a = 10;

因为Integer的自动装箱功能。
通过反编译工具我们可以看到class文件下是
Integer a = Integer.valueOf(10);
这就是基本数据类型的装箱。

Integer的自动拆箱

int b = a;反编译生成的class文件是int b = a.intVlaue();

深入对比

Integer a = new Integer(10);        Integer b = new Integer(10);        System.out.println(a == b);        System.out.println(a.equals(b));

结果前false,后true。

因为Integer变量是对Integer对象的引用,new了两个对象,显然内存地址不一样,引用不一样。
而Integer重写了equals方法,数值一样就返回true。

public static void main(String[] args) {        Integer a = 10;        Integer b = 10;        System.out.println(a == b);        Integer c = 128;        Integer d = 128;        System.out.println(c == d);    }

结果前true,后false

因为Integer自动装箱时对数值在-128到127的对象放入缓存中,第二次就直接取缓存中的数据而不会new。

public static void main(String[] args) {        Integer a = new Integer(10);        int b = 10;        System.out.println(a == b);    }

结果为true

因为Integer类型和int比较时,会自动拆箱,化为基本类型数据比较。

触发自动拆箱

算术运算会触发自动拆箱

转载于:https://www.cnblogs.com/dearcabbage/p/10603460.html

你可能感兴趣的文章
MongoDB数据导出
查看>>
Ubuntu常用操作命令
查看>>
mybatis中resultType和resultMap的联系
查看>>
jquery 调用js成员
查看>>
iOS 上传的图片在HTML上显示时,图片方向信息(EXIF Orientation)异常
查看>>
Git
查看>>
JAVA通信系列三:Netty入门总结
查看>>
Java8之新特性--modules
查看>>
RPD Volume 172 Issue 1-3 December 2016 评论02
查看>>
jQuery --计算复选框被选中个数
查看>>
快学UiAutomator UiDevice API 详解
查看>>
robotframework 测试结果写入数据库
查看>>
有一种感动叫ACM(记WJMZBMR在成都赛区开幕式上的讲话)
查看>>
【转】博弈题集
查看>>
Eclipse 远程开发插件 RSE 及远程登录
查看>>
给于用户Agent权限设置
查看>>
T端带数据库查询的假人系统
查看>>
Couldn't find preset "es2015" relative to directory问题解决
查看>>
Linux下常见命令
查看>>
Unix网络编程 高级IO套接字设置超时
查看>>