Java八大Wrapper类

本文详细介绍了Java中的八大包装类,包括它们的特点、自动装箱与拆箱、与基本数据类型的转换以及与String类的相互转换。还讨论了String类的结构,创建对象的两种方式以及内存分布,并通过实例探讨了字符串特性和不可变性。

Java八大Wrapper类

包装类

  1. 针对八种基本数据类型相应的引用类型

基本数据类型

包装类

boolean

Boolean

char

Character

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

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

在这里插入图片描述

在这里插入图片描述

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

以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; 是如何运行的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值