workplace-blog

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  30 随笔 :: 0 文章 :: 0 评论 :: 693 阅读

包装类

一.概述

  • 基本数据类型所对应的引用数据类型

栈中存放堆中对象的地址,基本类型数据不含任何属性和方法,为使其拥有更加强大的功能,开发者对八大基本数据类型提供了包装类(引用数据类型)。

  • Object可统一所有数据,包装类的默认值是null。
  • 八大基本数据类型对应的包装类
基本数据类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

包装类将基本类型的值包装在一个对象中。一个 该类型的对象只包含一个为 基本类型 的字段。

二.类型转换与装箱,拆箱

  • 装箱:把基本类型转换为引用类型(栈里的数据存放进堆);拆箱:把引用类型转换为基本类型(堆里的数据存放进栈)
  • 8种包装类提供不同类型间的转换方式:
    • Number父类中提供的六种共性方法。
    • parseXXX()静态方法(拆箱)
    • valueOf()方法(装箱)

//装箱,基本类型转成引用类型
int num1 = 18;
//使用Integer类创建一个对象
//API核心文档中Integer类的构造方法
Integer integer1 = new Integer(num1);//Integer(int value)
//valueOf方法
Integer integer2 = Integer.valueOf(num1);
System.out.println(integer1);
System.out.println(integer2);

//拆箱:引用类型转换为基本类型
Integer integer3 = new Integer(100);
int num2 = integer3.intValue();
System.out.println(integer3);

//JDK1.5之后java当中提供了自动装箱和拆箱功能
int age = 30;
//自动装箱
Integer integer4 = age;
//自动拆箱
int age2 = integer4;
System.out.println(integer4);
System.out.println(age2);

输出结果:
    18
    18
    100
    30
    30
//基本类型和字符串之间的转换
int n1 = 15;
//1.使用+号
String s1 = n1 + "";
//2.使用Integer中的toString方法
String s2 = Integer.toString(n1);
String s3 = Integer.toString(n1,16);//表示n1=15为十六进制表示,返回对应十六进制数f
Integer.toBinaryString(n1);//二进制
Integer.toHexString(n1);//十六进制
Integer.toOctalString(n1);//八进制
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);

//字符串转换为基本类型
String s4 = "150";//字符串中只能含数字,含非数字数据会报异常
//使用Integer.parse()
int i1 = Integer.parseInt(s4);
System.out.println(i1);

//boolean字符串类型转换为基本类型“true”-->true
String str1 = "true";//字符串非true输出均为false,不会出现异常
boolean b1 = Boolean.parseBoolean(str1);
System.out.println(b1);


输出结果:
    15
    15
    f
    150
    true

三.整数缓冲区

  • java预先创建了256个常用的整数类型包装类对象
  • 在实际运用中对已创建的对象进行复用
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);//false

Integer integer3 = Integer.valueOf(100);//true
Integer integer4 = Integer.valueOf(100);
System.out.println(integer3==integer4);

Integer integer5 = Integer.valueOf(200);//false
Integer integer6 = Integer.valueOf(200);
System.out.println(integer5==integer6);
  • integer1和integer2使用的Integer(value)构造方法

  • integer3,integer4,integer5,integer6使用的Integer.valueOf()方法
  • Integer.valueOf()说明:在堆中已经创建了一个IntegerCache的数组存储了从-128到127的所有对象,若value在这之间则直接指向,否则新创建一个Integer对象

  • integer3,integer4:在范围内直接指向,引用相同,输出为true

  • integer5,integer6超出范围,new一个新的Integer对象,引用不同,输出为false

posted on   多巴胺LLL  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示