Java八大Wrapper类

本文详细介绍了Java中的八大包装类,包括它们的作用、与基本数据类型的转换,特别是自动装箱和拆箱机制。此外,还讨论了Integer类与String类之间的转换方法,以及String类的重要特性和常用方法,如字符串常量池、不可变性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java八大Wrapper类

包装类

  1. 针对八种基本数据类型相应的引用类型
基本数据类型包装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

有类的特点, 可以调用类方法在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

包装类和基本数据类型转换

以int和Integer为例

  1. jdk5前, 装箱: 基本数据类型->包装类型, 反之拆箱.
  2. jdk5之后, 自动装箱和拆箱
  3. 自动装箱底层调用的是valueOf方法, 比如Integer.valueOf()

自动装箱和拆箱可以直接将值赋给包装类, 也可以直接将包装类赋给值

  • 包装类和String类型的相互转换

演示Integer和String之间的相互转换.

Integer to String

  • Integer + “”
  • Integer.toString()
  • String.valueOf()

String to Integer

  • Integer.parseInt()
  • Integer() 调用构造器, 也可以

Integer 和 String 常用的方法

Integer.MIN_VALUE

Integer.MAX_VALUE

String.isUpperCase() 判断是否是大写

String.toUpperCase() 转换为大写格式

Character.isDigit()

包装类

-128 到 127 调用的Integer都是在cache中的, 不会重新 new, 这些数据是在创建类的时候提前创建好的

String类结构刨析

  • String类的理解和创建对象.

理解

  1. String对象用于保存字符串

  2. 字符串常量使用双引号括起来的字符序列

  3. 字符串使用Unicode编码, 一个字符占两个字节

  4. String类较常用的构造器

在这里插入图片描述

String()
String(String original)
String(char[] a)
String(char[] a, int startIndex, int count)
String(byte[] b)

在这里插入图片描述

实现了Serializable, 说明可以串行化, 可以在网络传输.

Comparable, 说明可以比较大小.

常用的构造器有

使用了两个重要的接口

  1. String类是final类, 不能被继承
  2. value, String类保存数据, 实际保存在value数组中
  3. value是一个 final 类型, 一旦赋值后, 不能修改, 指的是value的地址不能再修改

创建String对象的两种方式

  • 方式一:直接赋值 String s = “zhx”;
  • 方式二:调用构造器 String s2 = new String(“zhx”);

区别

  1. 方式一: 先从常量池查看是否有"zhx"数据空间, 如果有, 直接指向, 没有则重新拆功能键, 然后指向, 最终指向的是常量池的空间地址
  2. 方式二: 先在堆中创建空间, 里面维护了value属性, 指向常量池的’zhx’空间. 如果常量池没有’zhx’, 重新创建, 如果有, 直接通过value指向. 最终指向的是堆中的空间地址.
  3. 内存分布图

在这里插入图片描述

String中的练习

intern方法将字符串添加到池中, 并返回池中的字符串对象的引用

字符串特性

  1. String是一个final类, 代表不可变的字符序列
  2. 字符串是不可变的, 一个字符串对象一旦被分配, 其内容是不可变的

画出内存布局图

String s1 = "hello";
s1 = "haha";

在这里插入图片描述

String a = "hello" + "abc";
// 创建了几个对象, 不是3!!! 只有一个对象
  1. 编译器会优化, 等价于直接 String a = “helloabc”; 判断引用是否有指向
String a = "hello";
String b = "abc";
String c = a + b; // 创建了几个对象, 画出内存图
String c = "hello" + "abc";
// 关键是分析 String c = a + b; 是如何运行的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值