Java包装类的拆箱和装箱是怎么回事?
什么是自动装箱和拆箱
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。
原始类型byte,short,char,int,long,float,double,boolean
对应的封装类为Byte,Short,Character,Integer,Long,Float,Double,Boolean
Java的包装类何时拆箱的规则
1.包装类赋值给基本类时触发(但是这是有个坑,见拆箱陷阱)
2.在做运算符运算时拆箱(也是有拆箱陷阱)
3.== 运算时 如果两边都是相同的包装类则不拆箱,如果有一边是基本类型,那包装类拆箱
/*java拆箱规则 演示*/
Integer a1 = 1;
Integer a2 = 1;
Integer b = 2;
int c = a1; /*拆箱*/
Integer d1 = 200;
Integer d2 = 200;
System.out.println(a1 * b); /*拆箱*/
System.out.println(a1 == c); /*拆箱 打印真*/
System.out.println(a1 == a2); /*不拆箱 打印真*/
System.out.println(d1 == d2); /*不拆箱 打印假*/
/* (结果输出)
2
true
true
false
*//*拆箱陷阱*/
Integer e1 = null;
int e2 = e1; /*报空指针异常*/
装箱陷阱
/*在装箱时自动调用Integer.valueOf()方法
Integer a1 = 1; 就相当于Integer a1 = Integer.valueOf(1);
实际上编译器编译时就是会自动调用Integer.valueOf()方法 *//*Integer.valueOf()具体实现*/
static final int low = -128;
static final int high; //默认是127
static final Integer cache[];
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);
}/*
调用Integer.valueOf()方法时 如果传过来的参数 大于等于IntegerCache.low且小于IntegerCache.high 则从cache[] 取出对应的返回,如果不成立则new一个新Integer因为a1是1,-128 < 1 < 127
所以 System.out.println(a1 == a2); 打印true
因为d1是200 200 > 127
所以System.out.println(d1 == d2); 打印false*/
Java包装类的拆箱和装箱是怎么回事?相关推荐
- Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- java中byte装箱和装箱_Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- Java知多少(24)包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- Java中的拆箱与装箱
我们先来了解一下拆箱与装箱的概念: 装箱:将基本数据类型转换为包装类: 拆箱:将包装类转换为基本数据类型 我们来看两串代码: Integer b1 = 127;Integer b2 = 127;Sys ...
- Java基础之拆箱和装箱
一.什么是拆箱和装箱 1)什么是拆箱 • 拆箱:将包装类类型转换为基本数据类型 • 拆箱调用Integer.intValue方法 2)什么是装箱 • 装箱:将基本数据类型转换为包装类类型 • 装箱调用 ...
- java中的拆箱和装箱是指什么_一文带你理解Java中自动装箱和拆箱
Java中自动装箱和拆箱 装箱(Boxing),也称为包装(Wrapper),是在对象中放置原语类型(primitive type)的过程,以便原语(primitive)可以作为引用对象使用. 这里的 ...
- 【JAVA】谈谈拆箱与装箱
谈谈装箱与拆箱 一.何为包装类型 Java是一种面向对象的语言,但是它不是纯面向对象的.Java中存在基本数据类型,谈不上对象.为了向纯面向对象靠拢,Java5的时候推出了基本数据类型的包装类型. 基 ...
- java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西. 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动 ...
- java中的自动拆箱和装箱(以及NEP问题)
java中的自动拆箱和装箱 1.回顾知识点 java中的8种基本数据类型,可以分为三类 字符类型 char 布尔类型 boolean 整数类型 byte , short , int , long 浮点 ...
最新文章
- oss客户端工具_阿里云服务器ECS上使用ossfs工具挂载阿里云OSS存储
- access与Oracle互导
- ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
- GCD6: 在GCD上异步执行非UI相关任务
- 2020年CSDN最后一波上车机会,快来~~
- 「傻瓜」才能写出好代码!
- 前端----表格的具体使用(jquery)
- [高中作文赏析]渴望从前
- LCN根据官网改造本项目失败案例
- 动易软件向网站服务器上传软件,动易CMS粘贴图片自动上传到服务器(Java版)
- vue-pdf 通过文件流预览pdf文件
- 详细流程,新手做情感视频,上个月收入6千,适合没才艺的普通人
- 将自己常用的Ubuntu18.04备份为ISO文件,保留私人配置与文件
- SQL数据库面试题以及答案(50例题优化版-增加图片):你必知必会的SQL语句练习
- Apache关联Weblogic启动时爆错!libstdc++.so.5
- Screaming Frog SEO Spider Mac(尖叫青蛙网络爬虫软件)
- 手机号码批量导入通讯录php,怎么用 Excel 批量录入电话号码并导入到 Android 手机...
- 提供免费样机模板素材的好网站推荐
- Rvalue References
- wma转mp3怎么弄_wma格式怎么转换mp3?用音频转换软件转换文件原来这么简单