自动装箱:/**

* 实际上,程序运行时,系统为我们执行了下面一条语句:

* Integer number = new Integer(290);

*/

Integer number = 290;

System.out.println(number);

自动拆箱:Integer number = 290;

// Other code

/**

* 实际上,程序运行时,系统为我们执行了下面一条语句:

* int number2 = number.intValue();

*/

int number2 = number;

System.out.println(number2);

就上面示例代码块而言,实际上自动装箱就是系统自动帮我们去 new 了 Integer 对象,大家都知道,每个对象都会有一个 hashCode() 方法,这个方法是继承 Object 而来,Object 类是所有类的超类。当需要比较两个对象是否相等时,可以用 "==" 和 equals 来做比较。

于对象而言, "==" 比较的是哈希码的值,也就是比较 hashCode() 方法的返回值,这个值是唯一的,在底层它是用来确定对象在堆内存上的存储位置。"==" 也可以用来做基本数据类型的比较。equals 方法大家都知道,它是用来比较两个对象的内容是否一样。

上面说到自动装箱其实就是系统自动帮我们去 new 了 Integer 对象,但是神奇的事情发生了:

当 int 的取值在 -128 ~ 127 之间的时候,这时候系统并不会每次都帮我们去 new 一个 Integer 对象,而是取值相同的对象只会被 new 一次,取值相同的 Integer 对象系统不会再去 new 一次,而是共享了已有的这个 Integer 对象。

而当 int 的取值在 -128 ~ 127 之外的时候,这时候不管 Integer 对象的取值是否一样,系统都会去 new 一个。// -128~127 之内的数

Integer number1 = 40;

Integer number2 = 40;

System.out.println("number1 == number2 : " + (number1 == number2));

// -128~127 之外的数

Integer number3 = 128;

Integer number4 = 128;

System.out.println("number3 == number4 : " + (number3 == number4));

System.out.println("number3 equals number4 : " + (number3.equals(number4)));

示例代码输出结果:number1 == number2 : true

number3 == number4 : false

number3 equals number4 : true

short 与 int 的装箱规则是一样,就不多说了,但不要认为所有的基本数据类型都有这样一个规则,比如 float 和 double 都没有这样的规则,float 和 double 每次装箱的时候都是会包装成一个对象的。

转载请并标注: “本文转载自 linkedkeeper.com ”  ©著作权归作者所有

java 自动拆箱_Java 自动装箱 和 自动拆箱相关推荐

  1. java装箱和拆箱_java自动装箱和拆箱

    这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱 ...

  2. java自动装箱的好处_Java自动装箱、自动拆箱

    一.前言 Java自动装箱和自动拆箱是JDK5.0版本提供的新特性,所以在JDK5.0后的版本中都可以使用,之前的版本则不支持该特性. 理解自动装箱和自动拆箱需要先对java中的8种原始数据类型和相对 ...

  3. java装箱拆箱_Java中的自动装箱与拆箱

    自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如 ...

  4. java 自动拆箱_Java中的自动装箱拆箱

    Java中的自动装箱拆箱 一.自动装箱与自动拆箱 自动装箱就是将基本数据类型转换为包装类类型,自动拆箱就是将包装类类型转换为基本数据类型. 1 //自动装箱 2 Integer total = 90; ...

  5. java中为什么自动装箱拆箱_Java自动装箱和自动拆箱的理解

    Java自动装箱和自动拆箱的理解 1.代码 public class AutoBoxing { public static void main(String[] args) { Integer a = ...

  6. java 自动装箱自动拆箱_自动装箱和自动拆箱

    自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基本类型了. 基 ...

  7. Java的自动装箱与自动拆箱

    一:什么是自动装箱拆箱 装箱就是自动将基本数据类型转换为包装器类型: 拆箱就是自动将包装器类型转换为基本数据类型. java中需要装箱拆箱的类型如下: 基本数据类型 包装器类型 int(4字节) In ...

  8. 第三次学JAVA再学不好就吃翔(part64)--自动装箱和自动拆箱

    学习笔记,仅供参考 自动装箱和自动拆箱 装箱:把基本类型转换为包装类类型 int x = 100; Integer i1 = new Integer(x); 拆箱:把包装类类型转换为基本类型 int ...

  9. Java 进阶——自动装箱和自动拆箱

    1.什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象实例的时候,我们会这样: Class a ...

  10. Java包装类与基本数据类型的自动 手动装箱与自动 手动拆箱

    Java包装类与基本数据类型的自动 手动装箱与自动 手动拆箱 **自动装箱与拆箱**,实现代码如下: /*** 装箱 : 基本数据类型-----> 包装类* 拆箱: 包装类-------> ...

最新文章

  1. c语言课程设计商品销售系统,c语言课程设计商品销售管理系统.pdf
  2. csv文件简介(转载)
  3. 关于定时执行任务的解决方法,PendingIntent alarm braocastRecevier等等
  4. 计算机安全相关的会议和期刊,中国计算机学会推荐国际学术刊物与会议网络与信息安全...
  5. 垂直布局的HTML表单
  6. JLINK、JTAG、ULINK和STLINK的区别介绍
  7. 微机综合保护装置怎么选择?在高压柜中起什么作用?
  8. windows主机开启winrm端口powershell脚本
  9. 长江大学计算机学院江琼琴,长江大学外国语学院硕士研究生校友名录(2005-2012级)...
  10. 将国际标准时间和时间戳转换成年月日时分秒
  11. 用java写银行存款对账,银行存款对账要怎么做
  12. C语言求Fibonacci数列
  13. js中判断空数组和空对象的方法
  14. 德国电信疫情期间净赚9个亿
  15. Linux环境下 java程序提交spark任务到Yarn报错
  16. Python操作Excel:openpyxl读写基础
  17. LawBreaker: An Approach for Specifying Traffic Laws and Fuzzing Autonomous Vehicles (ASE2022)
  18. 无线仪表变送器设备联网服务器,基于无线HART通信技术的仪表管理与诊断系统的设计.pdf...
  19. 《剑指offer》内容总结
  20. 关于使用校园网的时候使用阿里云视频点播上传服务失败的解决方法

热门文章

  1. joomla建站-双语CMS系统开发的实现
  2. [批处理]自动设置本机系统代理服务器
  3. Cross-site Scripting (XSS) 阅读笔记
  4. WinForm编程数据视图之DataGridView浅析
  5. xml web service
  6. dbms_lob包学习笔记之三:instr和substr存储过程
  7. Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建
  8. Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
  9. 第二次作业:王者荣耀软件分析
  10. ASP.NET Page执行顺序如:OnPreInit()、OnInit()