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. cookie转换成字典类型方便scraoy 使用

    #bakooie装换成紫电模式方便scrapy使用 cookid = "_ga=GA1.2.1937936278.1538889470; __gads=ID=1ba11c2610acf504 ...

  2. 使用脚本启动fabric时出错

    Error: got unexpected status: BAD_REQUEST -- error authorizing update: error validating ReadSet: rea ...

  3. deep_learning_Function_sklearn.preprocessing.LabelBinarizer()

    在多数的机器学习比赛中,给出的标签都是非数字化的,所以我们需要对其进行转换.代码如下: from sklearn import preprocessing feature = [[0,1], [1,1 ...

  4. TF启程

    我第一次开始接触到TensorFlow大概是去年五月份,大三下,如果一年多已过,我却还在写启程..这进度,实在汗颜.. 一个完整的tensorflow程序可以分为以下几部分: Inputs and P ...

  5. hadoop/hbase/hive单机扩增slave

    原来只有一台机器,hadoop,hbase,hive都安装在一台机器上,现在又申请到一台机器,领导说做成主备, 要重新配置吗?还是原来的不动,把新增的机器做成slave,原来的当作master?网上找 ...

  6. hashmap C++实现分析及std::unordered_map拓展

    今天想到哈希函数,好像解决冲突的只了解了一种链地址法而且也很模糊,就查了些资料复习一下 1.哈希Hash 就是把任意长度的输入,通过哈希算法,变换成固定长度的输出(通常是整型),该输出就是哈希值. 这 ...

  7. 第六章 组件 59 组件切换-使用Vue提供的component元素实现组件切换

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. 使用Sendinput以及GetAsyncKeyState来模拟按键延时

    Code: #include <windows.h> #include <tchar.h> #include <iostream> BOOL flag = TRUE ...

  9. ngnix之笔记

    ############################################################################# 我们在使用的时候会遇到很多的恶意IP攻击,这 ...

  10. puppet完全攻略(二)让puppet代码支持vim高亮显示

    puppet完全攻略(二)让puppet代码支持vim高亮显示 2012-06-10 13:33:01 标签:puppet viong puppet完全攻略 原创作品,允许转载,转载时请务必以超链接形 ...