系列文章目录

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核心技术卷一 -第五章:装箱和拆箱相关推荐

  1. Java核心技术卷一 -第五章:枚举类再认识

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  2. Java核心技术卷一 -第五章:类的强制类型转换与instanceof操作符

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  3. Java核心技术卷一 -第四章:方法参数

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  4. java第五弹 装箱和拆箱 常用类:Object类、String类、日期类

    1.Object类 Object是所有java类的父类,它所属的包是java.lang.Object. 如果在类的声明的时候,没有显示的extends去继承谁,默认继承Object. Object类的 ...

  5. Java核心技术卷一 -第十二章:多线程

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  6. Java核心技术卷一 -第九章:集合

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  7. Java核心技术卷一读书笔记

    文章目录 Java核心技术卷一读书笔记 第一章 Java程序设计概述 1.1 关键特性 第二章 Java程序设计环境 2.1 使用命令行工具 第三章 Java的基本查询设计结构 3.1 数据类型 3. ...

  8. Java核心技术卷一基础知识第10版demo实例

    Java核心技术卷一基础知识第10版demo实例 第三章 JAVA的基本程序设计结构 3.7输入与输出 3.7.1读取输入 3.8控制流程 3.8.3循环 3.10数组 3.10.6多维数组 第四章 ...

  9. Java核心技术卷一笔记

    Java核心技术-卷一学习笔记 文章目录 Java核心技术---卷一学习笔记 前言 一.第一章Java程序设计 标题Java具有的特性: 二.第二章Java程序设计环境 JDK和Jre的区别 第三章J ...

最新文章

  1. C语言指针高级部分:void指针和数据指针
  2. 下列哪个不是目前python里的内置模块-不吹不擂,你想要的Python面试都在这里了【315+道题】...
  3. Windows server用好windows server backup,发挥个人电脑该有的系统还原功能
  4. 就是要你懂 Java 中 volatile 关键字实现原理
  5. 从挂科学渣到史上学历最低诺奖得主,他用17年时间重新证明自己
  6. C#LeetCode刷题之#661-图片平滑器( Image Smoother)
  7. load average多少是正常_对 cpu 与 load 的理解及线上问题处理思路解读
  8. python ui自动化测试仪器_python UI自动化测试
  9. 安卓手机浏览器排行_安卓手机性价比排行:小米10至尊纪念版仅排第三
  10. JVM 完整深入解析
  11. 压缩感知重构算法之OMP算法---python实现
  12. 设计模式--模板方法模式(12)
  13. R语言-聚类分析(系统聚类)
  14. YOUTUBE API调用 JAVA
  15. 紫外线测光仪的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 什么是实体关系图(ERD)?
  17. 【Python-Anaconda】jupyter notebook运行代码时出现异常——代码前面的[ ]中为空,跳转下一行,显示自动保存失败。面对这种情况该如何解决?
  18. ES 搜索19 (match 查询时权重提升)
  19. 移动端切图内容包括什么_移动终端界面切图
  20. Qt中使用多线程并返回结果到主线程的例子

热门文章

  1. DWORD与ULONG的区别
  2. 国产系统部署服务器,国产服务器操作系统取得重大突破
  3. 百度网盘提速法,不用插件,不用安装脚本
  4. MATLAB中的bsxfun函数
  5. 《Python数据结构与算法分析》第一章课后习题
  6. Android 调用系统裁剪,适配11和12及手机
  7. 什么是业务中台、数据中台、技术中台?
  8. 【转】指定页面进行Monkey测试
  9. python倒序输出字符串的6种方法
  10. TensorFlow使用Keras Tuner自动调参