什么是自动装箱和拆箱

自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。

原始类型byte,short,char,int,long,float,double,boolean

对应的封装类为Byte,Short,Character,Integer,Long,Float,Double,Boolean

Java的包装类何时拆箱的规则

1.包装类赋值给基本类时触发(但是这是有个坑,见拆箱陷阱)

2.在做运算符运算时拆箱(也是有拆箱陷阱)

3.== 运算时 如果两边都是相同的包装类则不拆箱,如果有一边是基本类型,那包装类拆箱

/*java拆箱规则 演示*/
Integer a1 = 1;
Integer a2 = 1;
Integer b = 2;
int c = a1; /*拆箱*/
Integer d1 = 200;
Integer d2 = 200;
System.out.println(a1 * b);  /*拆箱*/
System.out.println(a1 == c);  /*拆箱 打印真*/
System.out.println(a1 == a2); /*不拆箱  打印真*/
System.out.println(d1 == d2); /*不拆箱 打印假*/
/* (结果输出)
2
true
true
false
*//*拆箱陷阱*/
Integer e1 = null;
int e2 = e1; /*报空指针异常*/

装箱陷阱

/*在装箱时自动调用Integer.valueOf()方法
Integer a1 = 1; 就相当于Integer a1 = Integer.valueOf(1);
实际上编译器编译时就是会自动调用Integer.valueOf()方法 *//*Integer.valueOf()具体实现*/
static final int low = -128;
static final int high; //默认是127
static final Integer cache[];
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);
}/*
调用Integer.valueOf()方法时 如果传过来的参数 大于等于IntegerCache.low且小于IntegerCache.high 则从cache[] 取出对应的返回,如果不成立则new一个新Integer因为a1是1,-128 < 1 < 127
所以 System.out.println(a1 == a2); 打印true
因为d1是200 200 > 127
所以System.out.println(d1 == d2); 打印false*/

Java包装类的拆箱和装箱是怎么回事?相关推荐

  1. Java包装类、拆箱和装箱详解

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...

  2. java中byte装箱和装箱_Java包装类、拆箱和装箱详解

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...

  3. Java知多少(24)包装类、拆箱和装箱详解

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...

  4. Java中的拆箱与装箱

    我们先来了解一下拆箱与装箱的概念: 装箱:将基本数据类型转换为包装类: 拆箱:将包装类转换为基本数据类型 我们来看两串代码: Integer b1 = 127;Integer b2 = 127;Sys ...

  5. Java基础之拆箱和装箱

    一.什么是拆箱和装箱 1)什么是拆箱 • 拆箱:将包装类类型转换为基本数据类型 • 拆箱调用Integer.intValue方法 2)什么是装箱 • 装箱:将基本数据类型转换为包装类类型 • 装箱调用 ...

  6. java中的拆箱和装箱是指什么_一文带你理解Java中自动装箱和拆箱

    Java中自动装箱和拆箱 装箱(Boxing),也称为包装(Wrapper),是在对象中放置原语类型(primitive type)的过程,以便原语(primitive)可以作为引用对象使用. 这里的 ...

  7. 【JAVA】谈谈拆箱与装箱

    谈谈装箱与拆箱 一.何为包装类型 Java是一种面向对象的语言,但是它不是纯面向对象的.Java中存在基本数据类型,谈不上对象.为了向纯面向对象靠拢,Java5的时候推出了基本数据类型的包装类型. 基 ...

  8. java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的

    自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西. 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动 ...

  9. java中的自动拆箱和装箱(以及NEP问题)

    java中的自动拆箱和装箱 1.回顾知识点 java中的8种基本数据类型,可以分为三类 字符类型 char 布尔类型 boolean 整数类型 byte , short , int , long 浮点 ...

最新文章

  1. oss客户端工具_阿里云服务器ECS上使用ossfs工具挂载阿里云OSS存储
  2. access与Oracle互导
  3. ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
  4. GCD6: 在GCD上异步执行非UI相关任务
  5. 2020年CSDN最后一波上车机会,快来~~
  6. 「傻瓜」才能写出好代码!
  7. 前端----表格的具体使用(jquery)
  8. [高中作文赏析]渴望从前
  9. LCN根据官网改造本项目失败案例
  10. 动易软件向网站服务器上传软件,动易CMS粘贴图片自动上传到服务器(Java版)
  11. vue-pdf 通过文件流预览pdf文件
  12. 详细流程,新手做情感视频,上个月收入6千,适合没才艺的普通人
  13. 将自己常用的Ubuntu18.04备份为ISO文件,保留私人配置与文件
  14. SQL数据库面试题以及答案(50例题优化版-增加图片):你必知必会的SQL语句练习
  15. Apache关联Weblogic启动时爆错!libstdc++.so.5
  16. Screaming Frog SEO Spider Mac(尖叫青蛙网络爬虫软件)
  17. 手机号码批量导入通讯录php,怎么用 Excel 批量录入电话号码并导入到 Android 手机...
  18. 提供免费样机模板素材的好网站推荐
  19. Rvalue References
  20. wma转mp3怎么弄_wma格式怎么转换mp3?用音频转换软件转换文件原来这么简单

热门文章

  1. mysql-8.0.29-winx64下载及安装教程
  2. 离散数学——朴素集合论
  3. 世界大学排名:KIIT成为奥里萨邦和印度东部排名第一的大学
  4. ZCMU 1311: 数字整除
  5. Matebook D14 2020 OpenCore 黑苹果 hackintosh
  6. 免费获取欧洲ECMWF两年的天气预报数据:
  7. Win11下通过命令行使能/禁用WiFi
  8. Dan版本的nnet2
  9. 当今最受欢迎的物联网协议(学习笔记)
  10. Android的所有权限