1. API(应用程序编程接口)
API(Application Programming Interface)是已经写好的程序接口,通过查询文档即可直接使用,无需重新编写代码。
2. 字符串
2.1 string
字符串的内容是不可变的,创建后无法修改。
2.2 创建 String 对象的两种方法
通过以下两种方式创建 String 对象:
// 1. 直接赋值
String s1 = "abc";
System.out.println(s1);
// 2. 构造方法
// 使用 new 关键字获取字符串对象
// 空参构造:创建一个空白的字符串对象
String s2 = new String();
System.out.println("@" + s2 + "!");
// 传递一个字符数组,根据字符数组的内容创建新的字符串对象
char[] chs = {'a', 'b', 'c', 'd'};
String s4 = new String(chs);
System.out.println(s4); // abcd
// 传递一个字节数组,根据字节数组的内容创建新的字符串对象
byte[] bytes = {97, 98, 99, 100};
String s5 = new String(bytes);
System.out.println(s5); // abcd
2.3 字符串比较
在 Java 中,使用 “==” 进行比较:
- 基本数据类型:比较的是数据值
- 引用数据类型:比较的是内存地址
常用方法:
boolean equals(String str)
:完全一致时返回 true,否则返回 false。boolean equalsIgnoreCase(String str)
:忽略大小写进行比较。
获取指定索引位置的字符:
public char charAt(int index)
截取字符串子串:
String substring(int beginIndex, int endIndex)
:包头不包尾,即返回值是从beginIndex
到endIndex-1
的子串。String substring(int beginIndex)
:从beginIndex
截取到末尾。
字符串替换:
String replace(CharSequence old, CharSequence new)
:返回替换后的新字符串。
2.4 StringBuilder
2.4.1 概述
StringBuilder 是一个内容可变的字符串容器,用于提高字符串操作效率。
2.4.2 构造方法
public StringBuilder()
:创建一个空白的可变字符串对象。public StringBuilder(String str)
:根据传入的字符串创建可变字符串对象。
2.4.3 常用方法
public StringBuilder append(任意类型)
:添加数据,并返回对象本身。public StringBuilder reverse()
:反转容器中的内容。public int length()
:返回字符串的长度(字符数)。public String toString()
:将 StringBuilder 转换为 String。
2.5 StringJoiner
2.5.1 概述
StringJoiner 类似于 StringBuilder,也可以看作一个内容可变的容器,用于提高字符串操作效率。
2.5.2 构造方法
public StringJoiner(CharSequence delimiter)
:创建一个 StringJoiner 对象,指定拼接时的分隔符。public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
:创建一个 StringJoiner 对象,指定拼接时的分隔符、前缀和后缀。
2.5.3 常用方法
public StringJoiner add(CharSequence newElement)
:添加数据,并返回对象本身。public int length()
:返回字符串长度(字符数)。public String toString()
:返回拼接后的字符串。
2.6 字符串的内存原理
2.6.1 存储时的内存分配
- 直接赋值会复用字符串常量池中的内容。
- 使用
new
关键字创建字符串不会复用常量池,而是开辟新的内存空间。
2.6.2 “==” 比较的内容
- 基本数据类型比较数据值。
- 引用数据类型比较内存地址。
2.6.3 字符串拼接的底层原理
- 没有变量参与时,字符串直接相加,编译后即为拼接结果,复用常量池中的字符串。
- 有变量参与时,每次拼接都会在内存中创建新的字符串,消耗内存。
2.6.4 StringBuilder 的扩容机制
默认创建一个长度为 16 的字节数组,存入内容超过 16 时会扩容至 34(原容量的 2 倍加 2);如果仍不够,则按实际需要的长度扩容。
通过这些工具和方法,Java 中的字符串操作变得高效且灵活。