一、什么是拆箱和装箱

1)什么是拆箱

• 拆箱:将包装类类型转换为基本数据类型
• 拆箱调用Integer.intValue方法

2)什么是装箱

• 装箱:将基本数据类型转换为包装类类型
• 装箱调用的Integer.valueOf方法

Integer a = 100; //装箱
int b = a; //拆箱

二、什么是自动装箱

  1. Java1.5 之前
Integer a = Integer.valueOf(100); //手动装箱
int b = a.intValue(); //手动拆箱
  1. Java1.5 之后
Integer a = 100; //自动装箱
int b = a; //自动拆箱

缓存取值范围
int、Integer (-128,127)
long、Long(-128,127)
byte、Byte(-128,127)
short、Short(-32768,32767)
char、Character(0,127)

三、直接装箱

double、float:声明、初始化时会自动装箱
boolean:基本类型布尔值是声明时是自动装箱
• 包装类布尔值:声明boolean或者声明Boolean是一样的,没有区别
• 有区别的是:boolean是基本数据类型、Boolean是引用数据类型(包装类类型)

四、知识点归纳

  1. int的默认缓存范围值是-128到127之间

  2. 当变量值大于等于缓存范围值时,此时底层会new Integer(),重新分配内存地址

  3. '=='比较的是引用地址

  4. 堆:用来存储程序中的一些对象,比如你用new关键字创建的对象,它就会被存储在堆内存中,但是这个对象在堆内存中的首地址会存储在栈中。

    栈:在jvm中栈用来存储一些对象的引用、局部变量以及计算过程的中间数据,在方法退出后那么这些变量也会被销毁。它的存储比堆快得多,只比CPU里的寄存器慢

  5. 栈默认内存:1M

五、面试知识点

  1. ==与equals区别?
  2. JVM的堆和栈
  3. 基础数据类型默认缓存值范围
  4. 装箱、拆箱

六、代码解读


/*** 当a1= 200时,valueOf()方法会校验值* 如果值在缓存之内,返回缓存的内存地址* 如果值在缓存之外,new Integer()重新分配内存地址*/
Integer a1 = 100;
Integer b1 = 100;
// 所以返回值:true
System.out.println(a1 == b1);Integer a2 = 200;
Integer b2 = 200;
// 所以返回值:false
System.out.println(a2 == b2);

Java基础之拆箱和装箱相关推荐

  1. Java中的拆箱与装箱

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

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

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

  3. Java包装类的拆箱和装箱是怎么回事?

    什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱. ...

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

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

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

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

  6. Java基础(简述拆箱装箱)

    在java中,int,double,boolean 等数据类型都不是类,应该如何转换,这里就引出了包装类,使用包装类将基本类型转换为包装类 如byte -Byte; double -Double;in ...

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

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

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

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

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

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

最新文章

  1. 海康威视 | AI算法实习生招聘(3D检测/分割/多模态融合)
  2. 【转】做正确的事情,等着被开除(Do the right thing, Wait to get fired)
  3. IC/FPGA笔试题分析(六)用16bit加法器IP核实现8bit乘法运算(文末彩蛋)
  4. visual studio2019许可证
  5. mysql数据库 日志类型_MySQL中的日志类型(一)-摘要和日志的共同特征
  6. Vue项目实战02 : vue项目刷新当前页面的三种方法
  7. idea 调试技巧1
  8. 一些实用的编程模式 | Builder模式能用来解决什么问题?
  9. php.js 文件下载,使用JavaScript开始下载文件
  10. LeetCode 526. Beautiful Arrangement
  11. cam350菜单怎么切换成中文_电子设计软件CAM350各菜单使用说明(一)
  12. 【html5插入透明Webm视频】
  13. 五、隐函数微分法和逆函数导数 六、指数与对数函数导数、对数微分法 七、第一次考试复习
  14. 我私藏的那些实用的终端命令行工具
  15. RocketMQ初识
  16. Yapi远程命令执行漏洞
  17. JADE盲源分离算法附MATLAB代码
  18. cmd脚本编程基础命令
  19. 天天带着这个工具,你也不一定完全知道它的一切!
  20. 知识图谱的系统工程观(综述)

热门文章

  1. 机器学习之关联规则(支持度和置信度、Apriori算法)
  2. python字符串是有序的吗_Python内置数据结构--字符串
  3. Python 医学文本结构化,文本分段,文本正则化处理,医学文本拆分成段落
  4. 11,xilinx 7系列FPGA理论篇——IO逻辑资源简介
  5. 计算机会计报表管理,会计电算化知识之报表管理模块的应用
  6. 英特尔至强联手东软,打造“智慧医疗”新引擎
  7. 7-10 计算多门课的平均绩点。
  8. Java—小鑫の日常系列故事(六)——奇遇记
  9. Linux screen简单用法
  10. 13-Flow的对象类型