java 常用类 - String

本文详细介绍了Java中的String类,包括其不可变性、常用API如equals()、indexOf()、substring()等,并对比了线程安全的StringBuffer和非线程安全但效率更高的StringBuilder。探讨了这三者在字符串操作中的应用场景和效率差异。

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

java 常用类 - String

字符串

概述

程序中所有的双引号字符串,都是string类的对象。

常量值,字符长度不可变

特点

  • 字符串的内容永不可变
  • 字符串是可以共享的(常量池)
  • 字符串效果相当是char[] 字符数组,但是底层原理是byte[] 字节数组

构造函数

String():创建一个空的字符串
String(byte[] bys):通过字节数组创建字符串
String(char[] chs):通过字符数组创建字符串

String(String original):通过字符串常量值创建字符串

常用api

比较

equals(Object obj):比较两个字符串是否相等
equalsIngnoreCase(Object obj):忽略大小写比较两个字符串是否相等
contains(String str):是否包含指定字符串
startsWith(String str):是否以指定的字符串开头
endWith(String str):是否以指定的字符串结尾
isEmpty():是否为空
matches(String regex):判断字符串是否匹配给定的正则表达式。

获取

length():获取长度
charAt(int index): 获取指定索引位置处的字符
indexOf(int ch):获取指定字符第一次出现的索引值(从0开始)
indexOf(int ch,int fromIndex):获取从指定索引位置开始,获取指定字符第一次出现的索引值
indexOf(String s):获取指定字符串第一次出现的索引值
indexOf(String s,int fromIndex):获取从指定索引位置开始,获取指定字符串第一次出现的索引值
lastIndexOf(int ch):获取指定字符最后一次出现的索引值

截取

substring(int start):从指定位置开始一直截取到末尾
substring(int start,int end):截取[start,end-1]范围

转换

byte[] getBytes():将字符串转成字节数组
char[] toCharArray():将字符串转成字符数组
static valueOf(char[] chs):将char[]转成字符串
static valueOf(int num):将int类型转成字符串
static valueOf(Object obj):将任意类型转成字符串
toLowerCase():转成小写
toUpcase():转成大写
concat(String str):字符连接

分割

String[] split(String regex): 根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit): 根据匹配给定的正则表达式来拆分此字符串。

其他

replace(char old,char new):将old字符替换成new字符
replace(String old,String new):将old字符串替换成new字符串
trim():去除两边空格
int compareTo(String s):字典比较,如果前面值小于后面值返回负数,否则返回正数,先比较第一个元素,如果相等再比较第二个元素…返回元素之间的差值;如果比较字符串有包含关系,返回的值是它们长度的差值
int compareToIgnoreCase(String s):忽略大小写字典比较

String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

小结

  • Java字符串String是不可变对象;
  • 字符串操作不改变原字符串内容,而是返回新字符串;
  • 常用的字符串操作:提取子串、查找、替换、大小写转换等;
  • Java使用Unicode编码表示Stringchar
  • 转换编码就是将Stringbyte[]转换,需要指定编码;
  • 转换为byte[]时,始终优先考虑UTF-8编码。

StringBuffer

概述

字符缓冲区,可以提高字符串的操作效率,但长度可变,本质是字符串,底层是一个数组,但是没有被final修饰,可以改变被变长度

特点

  • 线程安全的
  • 同步
  • 效率低

构造函数

StringBuffer():以默认容量创建空的StringBuilder对象
StringBuffer(int capacity):以指定容量创建空的StringBuilder对象
StringBuffer(String str):以指定的字符串创建StringBuilder对象

常用api

获取功能

int capacity():获取容量
int length():获取长度

添加功能

append(int value):追加。可以追加多种类型
insert(int offset,String s):在指定的位置插入指定数据

删除功能

deleteCharAt(int index):删除指定索引处的元素
delete(int start,int end):删除[start,start-1]范围内的元素

替换功能

replace(int start,int end,String s):将[start,end-1]范围内的元素替换成指定字符串

反转功能

reverse():元素反转

截取功能

String subString(int start):截取指定位置一直到末尾
String subString(int start,int end):截取[start,end-1]范围

StringBuilder

概述

字符缓冲区,可以提高字符串的操作效率,但长度可变,本质是字符串,底层是一个数组,但是没有被final修饰,可以改变被变长度

特点

  • 线程不安全的
  • 不同步
  • 效率高

构造函数

StringBuilder():以默认容量创建空的StringBuilder对象
StringBuilder(int capacity):以指定容量创建空的StringBuilder对象
StringBuilder(String str):以指定的字符串创建StringBuilder对象

常用api

获取功能

int capacity():获取容量
int length():获取长度

添加功能

append(int value):追加。可以追加多种类型
insert(int offset,String s):在指定的位置插入指定数据

删除功能

deleteCharAt(int index):删除指定索引处的元素
delete(int start,int end):删除[start,start-1]范围内的元素

替换功能

replace(int start,int end,String s):将[start,end-1]范围内的元素替换成指定字符串

反转功能

reverse():元素反转

截取功能

String subString(int start):截取指定位置一直到末尾
String subString(int start,int end):截取[start,end-1]范围

String、StringBuilder和StringBuffer的区别

String内容不可改变
StringBuilder和StringBuffer内容可变
StringBuilder是线程不安全的,不同步,效率高
StringBuffer是线程安全的,同步,效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值