Java基础之拆箱和装箱
一、什么是拆箱和装箱
1)什么是拆箱
• 拆箱:将包装类类型转换为基本数据类型
• 拆箱调用Integer.intValue方法
2)什么是装箱
• 装箱:将基本数据类型转换为包装类类型
• 装箱调用的Integer.valueOf方法
Integer a = 100; //装箱
int b = a; //拆箱
二、什么是自动装箱
- Java1.5 之前
Integer a = Integer.valueOf(100); //手动装箱
int b = a.intValue(); //手动拆箱
- 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是引用数据类型(包装类类型)
四、知识点归纳
int的默认缓存范围值是-128到127之间
当变量值大于等于缓存范围值时,此时底层会new Integer(),重新分配内存地址
'=='比较的是引用地址
堆:用来存储程序中的一些对象,比如你用new关键字创建的对象,它就会被存储在堆内存中,但是这个对象在堆内存中的首地址会存储在栈中。
栈:在jvm中栈用来存储一些对象的引用、局部变量以及计算过程的中间数据,在方法退出后那么这些变量也会被销毁。它的存储比堆快得多,只比CPU里的寄存器慢
栈默认内存:1M
五、面试知识点
- ==与equals区别?
- JVM的堆和栈
- 基础数据类型默认缓存值范围
- 装箱、拆箱
六、代码解读
/*** 当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基础之拆箱和装箱相关推荐
- Java中的拆箱与装箱
我们先来了解一下拆箱与装箱的概念: 装箱:将基本数据类型转换为包装类: 拆箱:将包装类转换为基本数据类型 我们来看两串代码: Integer b1 = 127;Integer b2 = 127;Sys ...
- Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- Java包装类的拆箱和装箱是怎么回事?
什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱. ...
- java中的拆箱和装箱是指什么_一文带你理解Java中自动装箱和拆箱
Java中自动装箱和拆箱 装箱(Boxing),也称为包装(Wrapper),是在对象中放置原语类型(primitive type)的过程,以便原语(primitive)可以作为引用对象使用. 这里的 ...
- 【JAVA】谈谈拆箱与装箱
谈谈装箱与拆箱 一.何为包装类型 Java是一种面向对象的语言,但是它不是纯面向对象的.Java中存在基本数据类型,谈不上对象.为了向纯面向对象靠拢,Java5的时候推出了基本数据类型的包装类型. 基 ...
- Java基础(简述拆箱装箱)
在java中,int,double,boolean 等数据类型都不是类,应该如何转换,这里就引出了包装类,使用包装类将基本类型转换为包装类 如byte -Byte; double -Double;in ...
- java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西. 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动 ...
- java中byte装箱和装箱_Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- Java知多少(24)包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
最新文章
- 海康威视 | AI算法实习生招聘(3D检测/分割/多模态融合)
- 【转】做正确的事情,等着被开除(Do the right thing, Wait to get fired)
- IC/FPGA笔试题分析(六)用16bit加法器IP核实现8bit乘法运算(文末彩蛋)
- visual studio2019许可证
- mysql数据库 日志类型_MySQL中的日志类型(一)-摘要和日志的共同特征
- Vue项目实战02 : vue项目刷新当前页面的三种方法
- idea 调试技巧1
- 一些实用的编程模式 | Builder模式能用来解决什么问题?
- php.js 文件下载,使用JavaScript开始下载文件
- LeetCode 526. Beautiful Arrangement
- cam350菜单怎么切换成中文_电子设计软件CAM350各菜单使用说明(一)
- 【html5插入透明Webm视频】
- 五、隐函数微分法和逆函数导数 六、指数与对数函数导数、对数微分法 七、第一次考试复习
- 我私藏的那些实用的终端命令行工具
- RocketMQ初识
- Yapi远程命令执行漏洞
- JADE盲源分离算法附MATLAB代码
- cmd脚本编程基础命令
- 天天带着这个工具,你也不一定完全知道它的一切!
- 知识图谱的系统工程观(综述)