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中,数据类 ...
随机推荐
- C99 inline关键字
C99 inline 一直以来都用C++用得比较多,这个学期做操作系统的课设用回了C,结果一波內联函数居然链接不过去--查了查资料,C99引入的inline和C++的inline语义区别是很大的,我算 ...
- sqlserver关于发布订阅replication_subscription的总结
(转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...
- javascript中的所有内容都是一个对象:字符串、值、数组、函数…
javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...
- video 轮播视频
<video controls :src="product.videoUrl" :poster="resURL + defaultImg">< ...
- Gephi简单导入数据
使用工具 Gephi-0.9.2 事前要导入的数据 Node.csv 节点:名称可以所以定,格式.csv Edge.csv 边:名称可以所以定,格式.csv 导入操作 新建项目 导入节点 新建列要与表 ...
- Windows地址栏的妙用
主角: 它就是windows自带的一个小工具->地址栏,可以通过在任务栏右键选择工具栏-地址栏添加使用. 妙用: 一.打开文件 使用方法:D:\Temp(文件路径) 小提示:快速进入回收站:Re ...
- odoo标识符
class Book(models.Model): _name = "library.book" _description = "Book" _order = ...
- 5、Sersync实时同步实战
1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故 ...
- 【2017-04-10】js来控制导航栏在滚动条拉到一定位置时显示
<html> <head> <title>test</title> </head> <body> <div style=& ...
- 使用remix的solidity在线编译环境部署一个faucet合约
一.浏览器打开https://remix.ethereum.org 地址 点击"+"新建一个sol文件,命名为faucet.sol 然后在代码区输入solidity代码 选择相关插 ...