引言
本文详细讲解Java包装类核心知识点,涵盖8大基本类型对应的包装类、自动装箱与拆箱、包装类常用API、字符串与基本类型转换。
一、包装类概述
Java是面向对象语言,8大基本数据类型不具备对象特性,包装类就是将基本数据类型封装成对象的类,让基本类型可以使用对象的方法和属性。
8大基本类型对应的包装类:
- byte → Byte
- short → Short
- int → Integer
- long → Long
- float → Float
- double → Double
- char → Character
- boolean → Boolean
二、包装类创建方式
1. Integer 创建
publicclassWrapperDemo{publicstaticvoidmain(String[]args){// 方式1:构造方法创建(不推荐)Integeri1=newInteger(100);Integeri2=newInteger("200");// 方式2:静态方法 valueOf()(推荐)Integeri3=Integer.valueOf(300);Integeri4=Integer.valueOf("400");}}2. 其他包装类同理
// Long类型Longl=Long.valueOf(1000L);// Double类型Doubled=Double.valueOf(3.14);// Boolean类型Booleanb=Boolean.valueOf(true);// Character类型(只能传字符)Characterc=Character.valueOf('A');三、自动装箱与自动拆箱(JDK5+特性)
1. 自动装箱
基本类型 → 自动转换为 包装类对象
// 自动装箱:int → IntegerIntegernum=10;2. 自动拆箱
包装类对象 → 自动转换为 基本类型
// 自动拆箱:Integer → intIntegera=20;intb=a;3. 运算自动拆箱装箱
Integerx=10;Integery=20;intres=x+y;// 自动拆箱运算Integersum=res;// 自动装箱四、基本类型与字符串相互转换
1. 基本类型 → 字符串
intnum=100;// 方式1:拼接空串Strings1=num+"";// 方式2:String.valueOf()Strings2=String.valueOf(num);// 方式3:包装类 toString()Strings3=Integer.toString(num);2. 字符串 → 基本类型
Stringstr="200";// 方式1:包装类 parseXXX() 最常用inta=Integer.parseInt(str);// 方式2:先转包装类,再自动拆箱intb=Integer.valueOf(str);3. 其他类型转换
// 字符串转longlongl=Long.parseLong("1000");// 字符串转doubledoubled=Double.parseDouble("3.14");// 字符串转booleanbooleanb=Boolean.parseBoolean("true");五、包装类常用API方法
publicclassWrapperApiDemo{publicstaticvoidmain(String[]args){// 1. 获取最大值、最小值System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);// 2. 十进制转二进制、八进制、十六进制System.out.println(Integer.toBinaryString(10));System.out.println(Integer.toOctalString(10));System.out.println(Integer.toHexString(10));// 3. Character 常用方法System.out.println(Character.isDigit('A'));// 判断是否为数字System.out.println(Character.isLetter('9'));// 判断是否为字母System.out.println(Character.toUpperCase('a'));// 转大写}}六、包装类的常量池
Integer、Byte、Short、Long 这四种包装类实现了常量池缓存:
- 默认缓存范围:-128 ~ 127
- 在范围内使用自动装箱,会
复用常量池对象 - 超出范围则创建新对象
publicclassCacheDemo{publicstaticvoidmain(String[]args){Integera=100;Integerb=100;System.out.println(a==b);// true 使用常量池Integerx=200;Integery=200;System.out.println(x==y);// false 超出缓存范围,新建对象}}七、包装类与基本类型的区别
- 包装类是引用类型,默认值为null;基本类型有默认值(int 0,boolean false)
- 包装类可用于泛型、集合,基本类型不支持
- 包装类可调用方法,基本类型不能
- 包装类存在常量池优化,基本类型无
我是双栈小码哥,点赞+收藏+关注,希望本文能对您的学习和工作有所帮助。