Java包装类
2021/10/6 9:11:04
本文主要是介绍Java包装类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java包装类
一.什么是包装类
包装类继承结构图
二.包装类应用场景
1、集合类泛型只能是包装类;
// 编译报错 List<int> list1 = new ArrayList<>(); // 正常 List<Integer> list2 = new ArrayList<>();
2、成员变量的默认值;
private int status; //基本数据类型 默认为0 private Integer status; //包装类型 默认为null
基本数据类型的成员变量都有默认值,如以上代码 status 默认值为 0,因为代码编写的问题,在赋值过程中 ,没有进行处理null值,就给status赋值了,那样就可能会出现问题,为了避免这样问题出现,只能使用包装类 Integer,它的默认值为 null,所以就不会有默认值影响,也就省掉了去处理null的麻烦了.
3、方法参数允许定义空值;
private static void test1(int status){//不可以传null System.out.println(status); } private static void test1(Integer status){//可以传null System.out.println(status); }
看以上代码,方法参数定义的是基本数据类型 int,所以必须得传一个数字过来,不能传 null,很多场合我们希望是能传递 null 的,所以这种场合用包装类比较合适。
注意.包装类是对象.所以在使用==比较的是地址 如果需要比较值的话那么使用包装类中的,equals 用法和String中的equals一样,当然也是可以使用Objects.equals()的
所有包装类里的方法基本相同 ,所以下面案例只拿几种来演示
三.自动装箱、拆箱
装箱:基本数据类型转换为包装类;
拆箱:包装类转换为基本数据类型。
//1.自动装箱 int t1=1; Integer t2=t1; //2.手动装箱 Integer t3=new Integer(t1); System.out.println("int类型t1="+t1); System.out.println("自动装箱,Integer类型对象t2="+t2); System.out.println("手动装箱,Integer类型t3="+t3); //1.自动拆箱 int t4=t2; //2.手动拆箱 //通过intValue()方法返回int值,还可以利用其他方法装换为其他类型 int t5=t2.intValue(); System.out.println("自动拆箱,int型t4="+t4); System.out.println("手动拆箱,int型t5="+t5);
四.基本数据类型,字符串和包装类的转换
通过包装类Integer.toString()–将整型转换为字符串;
通过Integer.parseInt()–将字符串转换为int类型;
通过valueOf()–把字符串转换为包装类然后自动拆箱
//基本数据类型转换为字符串 int t1=12; String t2=Integer.toString(t1); System.out.println("int转换为String:"+t2); //字符串转换为基本数据类型 //通过paerInt方法 将字符串转为int int t3=Integer.parseInt(t2); //通过valeOf,先把字符串转换为包装类然后通过自动拆箱 转换为int int t4=Integer.valueOf(t2); System.out.println("t3:"+t3); System.out.println("t4:"+t4);
五.包装类缓存概念
Java为了提高拆装箱效率,在执行过程中提供了一个缓存区(对象池)【类似于常量数组】如果传入的参数是,-128 ~127 会直接去缓存查找数据,如果有久直接产生,如果没有就隐式调用new方法产生
Integer three=100; // 这时缓存区没有,就会构造一个 Integer four=100; //这时缓存区有,就会直接取 Integer five=200; //这里为200,超出了缓存区范围,所以就会隐式 new Integer(200)
六.整形进制转换
Integer
和 Long
toBinaryString(int i) //转2进制 Integer.toHexString(int i) //转16进制 Integer.toOctalString(int i)//转 8进制
这篇关于Java包装类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能