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 - 自动装箱与拆箱详解的更多相关文章

  1. java的装箱和拆箱详解

    ========================================================================================= 在我看来,学习jav ...

  2. 【转】java 自动装箱与拆箱

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

  3. Java进阶(三十七)java 自动装箱与拆箱

    Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...

  4. Java 自动装箱与拆箱

    Java 自动装箱与拆箱(Autoboxing and unboxing)   什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供 ...

  5. JAVA基础之——三大特征、接口和抽象类区别、重载和重写区别、==和equals区别、JAVA自动装箱和拆箱

    1 java三大特征 1)封装:即class,把一类实体定义成类,该类有变量和方法. 2)继承:从已有的父类中派生出子类,子类实现父类的抽象方法. 3)多态:通过父类对象可以引用不同的子类,从而实现不 ...

  6. 转载:详解Java 自动装箱与拆箱的实现原理

    原文:http://www.jb51.net/article/111847.htm 什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对 ...

  7. Java基础(十四)--装箱、拆箱详解

    Java中基本数据类型都有相对应的包装类 什么是装箱?什么是拆箱? 在Java SE5之前,Integer是这样初始化的 Integer i = new Integer(10); 而在从Java SE ...

  8. [转]java 自动装箱与拆箱

    转自:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2451996.html 这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好 ...

  9. [转]JAVA自动装箱和拆箱

    http://www.cnblogs.com/dolphin0520/p/3780005.html 1.Java数据类型 装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类 ...

随机推荐

  1. C99 inline关键字

    C99 inline 一直以来都用C++用得比较多,这个学期做操作系统的课设用回了C,结果一波內联函数居然链接不过去--查了查资料,C99引入的inline和C++的inline语义区别是很大的,我算 ...

  2. sqlserver关于发布订阅replication_subscription的总结

    (转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...

  3. javascript中的所有内容都是一个对象:字符串、值、数组、函数…

    javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...

  4. video 轮播视频

    <video controls :src="product.videoUrl" :poster="resURL + defaultImg">< ...

  5. Gephi简单导入数据

    使用工具 Gephi-0.9.2 事前要导入的数据 Node.csv 节点:名称可以所以定,格式.csv Edge.csv 边:名称可以所以定,格式.csv 导入操作 新建项目 导入节点 新建列要与表 ...

  6. Windows地址栏的妙用

    主角: 它就是windows自带的一个小工具->地址栏,可以通过在任务栏右键选择工具栏-地址栏添加使用. 妙用: 一.打开文件 使用方法:D:\Temp(文件路径) 小提示:快速进入回收站:Re ...

  7. odoo标识符

    class Book(models.Model): _name = "library.book" _description = "Book" _order = ...

  8. 5、Sersync实时同步实战

    1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故 ...

  9. 【2017-04-10】js来控制导航栏在滚动条拉到一定位置时显示

    <html> <head> <title>test</title> </head> <body> <div style=& ...

  10. 使用remix的solidity在线编译环境部署一个faucet合约

    一.浏览器打开https://remix.ethereum.org 地址 点击"+"新建一个sol文件,命名为faucet.sol 然后在代码区输入solidity代码 选择相关插 ...