Java - 自动装箱与拆箱详解
1、装箱与拆箱
装箱,将基本数据类型转为包装类型。拆箱,将包装类型转为基本数据类型。
// Byte, Short, Integer, Long, Double, Float, Boolean, Character
// 自动装箱,将基本数据类型转为包装类型
Integer i1 = 200;
Integer i2 = 200;
// 自动拆箱,将包装类型转为基本数据类型
int i3 = i1;
int i4 = i2;
2、基本数据类型与包装类型

3、装箱与拆箱如何实现
装箱的时候JVM自动调用的是Integer的valueOf(value)方法。拆箱时JVM自动调用Integer的intVlue()方法。装箱与拆箱的实现过程即为:装箱过程是通过调用包装器的valueOf(value)方法实现的,而拆箱过程是通过调用包装器的 xxxValue()方法实现的。(xxx代表对应的基本数据类型),包装类型做算术运算时,会自动拆箱为基本数据类型再进行。
4、面试中常见的问题
4.1 整形类型
// Byte, Short, Integer, Long, Double, Float, Boolean, Character
// 自动装箱,将基本数据类型转为包装类型
Integer i1 = 200;
Integer i2 = 200;
// 自动拆箱,将包装类型转为基本数据类型
int i3 = 127;
int i4 = 127; System.out.println(i1 == i2);
System.out.println(i3 == i4);
输出结果:
false
true
原因需要查看Integer.valueOf(int i)方法。
4.2 浮点类型
Double d1 = 2.3;
Double d2 = 2.3;
System.out.println(d1 == d2); Double d3 = 1000.1;
Double d4 = 1000.1;
System.out.println(d3 == d4);
输出结果:
false
false
4.3 综合
public static void main(String[] args) {
Integer a1 = 1;
Integer a2 = 2;
Long b1 = 2L;
Long b2 = 3L;
// ture
System.out.println(b2 == (a1+a2));
// true
System.out.println(b2 == (a1+b1));
// false
System.out.println(b2.equals(a1+a2));
// true
System.out.println(b2.equals(a1+b1));
}
Java - 自动装箱与拆箱详解的更多相关文章
- java的装箱和拆箱详解
========================================================================================= 在我看来,学习jav ...
- 【转】java 自动装箱与拆箱
java 自动装箱与拆箱 这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的 ...
- Java进阶(三十七)java 自动装箱与拆箱
Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...
- Java 自动装箱与拆箱
Java 自动装箱与拆箱(Autoboxing and unboxing) 什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供 ...
- JAVA基础之——三大特征、接口和抽象类区别、重载和重写区别、==和equals区别、JAVA自动装箱和拆箱
1 java三大特征 1)封装:即class,把一类实体定义成类,该类有变量和方法. 2)继承:从已有的父类中派生出子类,子类实现父类的抽象方法. 3)多态:通过父类对象可以引用不同的子类,从而实现不 ...
- 转载:详解Java 自动装箱与拆箱的实现原理
原文:http://www.jb51.net/article/111847.htm 什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对 ...
- Java基础(十四)--装箱、拆箱详解
Java中基本数据类型都有相对应的包装类 什么是装箱?什么是拆箱? 在Java SE5之前,Integer是这样初始化的 Integer i = new Integer(10); 而在从Java SE ...
- [转]java 自动装箱与拆箱
转自:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2451996.html 这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好 ...
- [转]JAVA自动装箱和拆箱
http://www.cnblogs.com/dolphin0520/p/3780005.html 1.Java数据类型 装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类 ...
随机推荐
- day09 并发编程
一. 目录 1.进程的概念和两种创建方式 2.多进程爬虫 3.守护进程 4.进程队列 5.进程队列简单应用(实现数据共享) 6.线程的两种创建方式 7.线程和进程的效率对比 8.线程共享统一进程的数据 ...
- 安装.Net Framework 2.0出现 Error 25015
---------------------------Microsoft .NET Framework 2.0 安装程序---------------------------Error 25015.安 ...
- deep_learning_Function_One-host参数
在很多机器学习任务中,特征并不总是连续值,而有可能是分类值.比如星期类型,有星期一.星期二.…….星期日,比如浏览器类型有["uses Firefox", "uses C ...
- OSG入坑之路[转]
转载自:https://segmentfault.com/a/1190000010506374?utm_source=tag-newest osg插件原理:https://blog.csdn.net/ ...
- mysql数据库: 用户管理、pymysql使用、navicat插件使用
一.用户管理 二.pymysql增删改查 三.sql注入攻击 一.用户管理 数据安全非常重要 不可能随便分配root账户 应该按照不同开发岗位分配不同的账户和权限 mysql中 将于用户相关的数据放在 ...
- Linux配置JDK环境
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-co ...
- Git 简要教程
Git是一个管理系统,管理版本,管理内容(CMS),管理工作等. Git主要还是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 工作流程是这样的: 克隆 Git 资源作为工作目录 ...
- 如何在GitBook中使用Git管理
1.在GitBook中新建[Book],找到对应目录下的位置,拷贝[book]名称后删除文件夹以及文件,新建文件夹重命名为[book]名称 2.打开文件夹,在根目录下选择创建git仓库,即 git i ...
- demjson
demjson.decode() 可以扩展json的类型
- [APIO2010] 算法竞赛竞赛经典 巡逻
原题链接 题目描述 在一个地区有 n 个村庄,编号为1,2,-,n. 有 n-1 条道路连接着这些村庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其他任一个村庄. 每条道路的长度 ...