Java核心技术卷一 -第五章:装箱和拆箱
系列文章目录
Java核心技术卷一 -第一章:java“白皮书”的关键术语
Java核心技术卷一 -第三章:数据类型
Java核心技术卷一 -第三章:变量与常量
Java核心技术卷一 -第三章:运算符
Java核心技术卷一 -第三章:字符串
Java核心技术卷一 -第三章:输入与输出
Java核心技术卷一 -第三章:数组
Java核心技术卷一 -第四章:类之间的关系-依赖
Java核心技术卷一 -第四章:预定义类-LocalDate类小应用
Java核心技术卷一 -第四章:构造器
Java核心技术卷一 -第四章:null引用
Java核心技术卷一 -第四章:方法参数
Java核心技术卷一 -第四章:对象构造
Java核心技术卷一 -第五章:覆盖方法与super
Java核心技术卷一 -第五章:super关键字
Java核心技术卷一 -第五章:类的强制类型转换与instanceof操作符
Java核心技术卷一 -第五章:抽象类与abstract关键字
Java核心技术卷一 -第五章:Object类的toString方法
Java核心技术卷一 -第五章:数组列表初识
文章目录
- 系列文章目录
- 前言
- 一、包装类存在的意义
- 代码展示:
- 二、包装类型
- 三、Number类
- 代码展示:
- 四、自动装箱和自动拆箱
- 代码展示:
- 图示:
- 五、缓存
- 代码展示:
- 图示:
- 总结
前言
本人为java初学者,文章内容仅为个人学习总结分享,其中包含了大量Java核心技术卷一里面的文章内容以及一些网站文章内容,由于参考文章过多,在此并不一一列出,如有侵权,请联系删除。
一、包装类存在的意义
有没有这种需求:调用doSome()方法的时候需要传一个数字进去。但是数字属于基本数据类型,而dosome()方法参数的类型是Object。但是doSome()方法无法接收基本数据类型的数字。那怎么办呢?
可以传一个数字对应的包装类进去。把传入100这个数字经过构造方法包装成对象。
MyInt myInt = new MyInt(100);
doSome()方法虽然不能直接传100,但是可以传一个100对应的包装类型。
doSome(myInt);
代码展示:
public class IntegerTest01 {public static void main(String[] args) {MyInt myInt = new MyInt(100);doSome(myInt);}public static void doSome(Object obj){System.out.println(obj.toString());}
}class MyInt{int value;public MyInt(){}public MyInt(int value) {this.value = value;}@Overridepublic String toString() {return String.valueOf(value);}
}
二、包装类型
三、Number类
八种包装类中其中6个都是数字对应的包装类,他们的父类都是Number,可以先研一下Number中公共的方法。
Number是一个抽象类,无法实例化对象。
Nunber类的方法:
代码展示:
public class IntegerTest02 {public static void main(String[] args){//12这个基本数类型,进行构造方法的包装达到了:基本数据类型向引用数据类型的转换。// 基本数类型-(转换为)->引用数据英型(装箱)Integer i = new Integer(123);//将引用数据类型--(转换为)->基本数据类型float f = i.floatValue();System.out.println(f);//123.0// 引用数据类型一(转换为)->基本数据类型(拆箱) int retValue = i.intValue();System.out.println(retValue);//123}
}
四、自动装箱和自动拆箱
在JDK1.5之后,支持自动装箱和自动拆箱了
自动装箱:基木数据类型自动转换成包装类。
自动拆箱:包装类自动转换成基本数据类型。
有了自动拆箱之后,Number类中的方法就用不着了!
代码展示:
public class Test02 {public static void main(String[] args){//900是基本数据类型//x是包装类型//基本数据类型一(自动转换)-->包装类型:自动装箱Integer x=900;System.out.println(x);//×是包装类型//y是基本数据类型//包装类型一(自动转换)-->基本数据类型:自动拆箱int y=x;System.out.println(y);Integer z=1000;//分析为什么这个没有报错呢?//"+"两边要求是基本数据类型的数字,z是包装类,不属于基本数类型,这里会进行自动拆箱。将z转换成基本数据类型System.out.println(z+1);Integer a=1000;//Integer a=new Integer(1000);a是个引用,保存内存地址指向对象。Integer b=1000;//Integer b=new Integer(1000);b是个引用,保存内存地址指向对象。// ==比较的是对象的内存地址,a和b两个引用中保存的对象内存地址不同。// ==这个运算符不会发自动拆机制。(只有+、-、*、/等运算的时候才会。)System.out.println(a ==b);//false}
}
图示:
五、缓存
代码展示:
public class Test02 {public static void main(String[] args){Integer a=128;Integer b=128;System.out.println(a==b);//false/* java中为了提高程序的执行效率,将[-128到127]之间所有的包装对象提前创建好,放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间的数据不需要再new了,直接从整数型常量池当中取出来。原理:×变量中保存的对象的内存地址和变量y中保存的对象的内存地址是一祥的。*/Integer x=127;Integer y=127;System.out.println(x==y);//true}
}
图示:
总结
以上就是本文的内容,记录了一些关于java“装箱和拆箱”的内容,本人也是刚开始接触java,不能保证总结内容的正确性,若是有错误的话,欢迎大家指出,谢谢!
Java核心技术卷一 -第五章:装箱和拆箱相关推荐
- Java核心技术卷一 -第五章:枚举类再认识
系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...
- Java核心技术卷一 -第五章:类的强制类型转换与instanceof操作符
系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...
- Java核心技术卷一 -第四章:方法参数
系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...
- java第五弹 装箱和拆箱 常用类:Object类、String类、日期类
1.Object类 Object是所有java类的父类,它所属的包是java.lang.Object. 如果在类的声明的时候,没有显示的extends去继承谁,默认继承Object. Object类的 ...
- Java核心技术卷一 -第十二章:多线程
系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...
- Java核心技术卷一 -第九章:集合
系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...
- Java核心技术卷一读书笔记
文章目录 Java核心技术卷一读书笔记 第一章 Java程序设计概述 1.1 关键特性 第二章 Java程序设计环境 2.1 使用命令行工具 第三章 Java的基本查询设计结构 3.1 数据类型 3. ...
- Java核心技术卷一基础知识第10版demo实例
Java核心技术卷一基础知识第10版demo实例 第三章 JAVA的基本程序设计结构 3.7输入与输出 3.7.1读取输入 3.8控制流程 3.8.3循环 3.10数组 3.10.6多维数组 第四章 ...
- Java核心技术卷一笔记
Java核心技术-卷一学习笔记 文章目录 Java核心技术---卷一学习笔记 前言 一.第一章Java程序设计 标题Java具有的特性: 二.第二章Java程序设计环境 JDK和Jre的区别 第三章J ...
最新文章
- C语言指针高级部分:void指针和数据指针
- 下列哪个不是目前python里的内置模块-不吹不擂,你想要的Python面试都在这里了【315+道题】...
- Windows server用好windows server backup,发挥个人电脑该有的系统还原功能
- 就是要你懂 Java 中 volatile 关键字实现原理
- 从挂科学渣到史上学历最低诺奖得主,他用17年时间重新证明自己
- C#LeetCode刷题之#661-图片平滑器( Image Smoother)
- load average多少是正常_对 cpu 与 load 的理解及线上问题处理思路解读
- python ui自动化测试仪器_python UI自动化测试
- 安卓手机浏览器排行_安卓手机性价比排行:小米10至尊纪念版仅排第三
- JVM 完整深入解析
- 压缩感知重构算法之OMP算法---python实现
- 设计模式--模板方法模式(12)
- R语言-聚类分析(系统聚类)
- YOUTUBE API调用 JAVA
- 紫外线测光仪的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 什么是实体关系图(ERD)?
- 【Python-Anaconda】jupyter notebook运行代码时出现异常——代码前面的[ ]中为空,跳转下一行,显示自动保存失败。面对这种情况该如何解决?
- ES 搜索19 (match 查询时权重提升)
- 移动端切图内容包括什么_移动终端界面切图
- Qt中使用多线程并返回结果到主线程的例子