Java字符串

📅 2026/7/13 4:35:08 👁️ 阅读次数 📝 编程学习
Java字符串

一.API

应用程序接口,简单来说API就是别人已经写好的东西,我们不用自己再写一遍,直接使用即可

Java API:指JDK中提供的各种功能的java类,这些类将底层的实现封装起来,不用考虑这些类是怎么实现的,直接学习这些类的使用即可

二.String

概述:java.lang.String类代表字符串,Java程序中的所有字符串文字都为此类的对象

注意:字符串的内容不会发生改变,它的对象在创建后不能被更改

String对象的创建:

1.直接赋值

String name = "";

2.new方法创建

构造方法说明
public String()创建空白字符串,不含任何内容
public String(String original)根据传入的字符串,创建字符串对象
public String(char[] chs)根据字符数组,创建字符串对象
public String(byte[] chs)根据字节数组,创建字符串对象

字符数组的使用场景:需要修改字符串内容

字节数组的使用场景:以后在网络中传输的数据都是字节信息,一般要把字节信息进行转换,转换成字符串,此时用到此构造

Java的常用方法(比较):

==号比较的到底是什么:基本数据类型比较数据值;引用数据类型比较地址值

字符串的比较方法:

构造方法说明
boolean equals(要比较的字符串)完全一样的结果才是true,否则为false
boolean equalsIgnoreCase(要比较的字符串)忽略大小写的比较

字符串的遍历:

构造方法说明
public char charAt(int index)根据索引返回字符
public int length()返回此字符串的长度

字符串的截取:

构造方法说明
String substring(int beginIndex,int endIndex)包头不包尾,包左不包右;只有返回值才是截取的小串
String substring(int beginIndex)截取到末尾

字符串的替换:

构造方法说明
String replace(旧值,新值)只有返回值才是替换后的结果

三.StringBuilder

概述:StringBuilder可以看作是一个容器,创建后里面的内容是可变的

作用:提高字符串的操作效率

StringBuilder的构造方法:

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串的内容,创建可变字符串对象

StringBuilder的常用方法:

方法名说明
public StringBuilder append(任意类型)添加数据并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString()可以实现吧StringBuilder转换为String

链式编程:在调用一个方法时,不需要用变量接收结果,可以继续调用其他的方法

四.StringJoiner

概述:StringJoiner和StringBuilder一样,也可以看作是一个容器,创建后里面的内容是可变的

作用:提高字符串的操作效率,而且代码的编写十分简洁

JDK8之后出现

StringJoiner的构造方法:

方法名说明
public StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号

StringJoiner的成员方法:

方法名说明
public StringJoiner add(添加的内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接后的结果)

五.字符串原理

1.字符串存储的内存原理:

直接赋值会服用字符串常量池中的

new出来的不会复用,而是开辟一个新的空间

2.==号比较的到底是什么:

基本数据类型比较数据值

引用数据类型比较地址值

3.字符串拼接的底层原理:

如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果, 会复用串池中的字符串

如果有变量参与,会创建新的字符串,浪费内存

4.StringBuilder提高效率原理:

所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

5.StringBuilder源码分析:

默认创建一个长度为16的字节数组

添加的内容长度小于16,直接存储

添加的内容大于16会扩容(原来容量*2+2)

如果扩容之后还不够,已实际长度为准