Java字符串相关(String、StringBuffer、StringBuilder)

String类

String是一个final类,代表不可变的字符串序列。

String类位于java.lang包下,是java的核心类,提供了字符串的比较,查找,截取,大小转换等。

String的实例化两种方式

1.直接赋值实例化:

String StringName = "xxxx";

2.使用构造方法实例化:

public String(String str);

"+"连接符

int i = 10;
String s = "abc";
System.out.println(s + i);
​
byte byte0 = 10;      
String s = "abc";
System.out.println((newStringBuilder()).append(s).append(byte0).toString());

Java中使用"+"连接字符串对象时,会创建一个StringBuilder()对象,并调用append()方法将数据拼接,最后调用toString()方法返回拼接好的字符串。

String类的构造方法

String s1 = new String(); //创建String对象,字符串中没有内容
​
byte[] bys = new byte[]{90,91,92,93};
String s2 = new String(bys); 
// 创建String对象,把数组元素作为字符串的内容
​
String s3 = new String(bys, 2, 4); 
//String(byte[] bytes, int offset, int length)
//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素
char[] chrs = new char[]{’a’,’b’,’c’,’w’,’v’};
String s4 = new String(chrs); 
//创建String对象,把数组元素作为字符串的内容
​
String s5 = new String(chrs, 0, 3);
//String(char[] value, int offset, int count)
//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素
​
String s6 = new String(“abc”); 
//创建String对象,字符串内容为abc

String类的方法

int length(): 返回字符串的长度
​
char charAt(int index): 返回某索引处的字符
​
boolean isEmpty(): 判断是否为空字符串
​
String toLowerCase(): 将String中的所有字符转换为小写
String toUpperCase(): 将String中的所有字符转换为大写
​
String trim(): 返回字符串(去除前部和尾部的空白)
​
boolean equals(Object obj): 比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString):忽略大小写比较字符串内容是否相同
​
String concat(String str):将指定字符串连接到此字符串的尾部,等价于"+"
​
int compareTo(String anotherString): 比较两个字符串的大小
​
String substring(int beginIndex): 返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串
String substring(int beginIndex, int endIndex): 返回一个新字符串,它是此字符串从beginIndex开始开始截取到endIndex(不包含)的一个子字符串
​
boolean contains(CharSequence s): 当且仅当此字符串包含指定的char值序列时,返回true
​
int indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str, int fromIndex): 返回指定子字符串在指定的索引开始第一次出现处的索引
​
int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str, int fromIndex): 返回指定子字符串从指定的索引反向搜索最后一次出现处的索引
注:indexOf和lastIndexOf方法如果未找到都是返回-1
​
boolean endsWith(String suffix): 测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix): 测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset): 测试此字符串从指定索引开始的子字符串是否以指定的前缀开始
​
String replace(char oldChar, char newChar): 返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的
String replace(CharSequence target, CharSequence replacement): 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
​
String replaceAll(String regex, String replacement): 使用给定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串
String replaceFirst(String regex, String replacement): 使用给定的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串
boolean matches(String regex): 告知此字符串是否匹配给定的正则表达式
String[] split(String regex): 根据给定正则表达式的匹配拆分此字符串
String[] split(String regex, int limit): 根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中

StringBufferStringBuilder

String为不可变的字符串序列,它在以变量的形式进行字符串拼接时,会产生大量的新的字符串,会开辟大量的空间。

当对字符串进行修改的时候,需要使用StringBufferStringBuilder类。

和String类不同的是,StringBufferStringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilderStringBuffer之间最大的不同在于StringBuilder的方法不是线程安全的(不能同步访问)。

由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。但是在应用程序要求线程安全的情况下,则必须使用StringBuffer类。

运行速度: StringBuilder > StringBuffer >String

线程安全: StringBuffer

总结:

String: 适用于少量的字符串操作的情况

StringBuilder: 适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer: 适用于多线程下在字符缓冲区进行大量操作的情况

StringBuilderStringBuffer的方法

构造方法

StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为16个字符

StringBuilder(CharSequence seq) 构造一个字符串生成器,它包含与指定的

StringBuilder(int capacity) 构造一个不带任何字符的字符串生成器,其初始容量由capacity参数指定

StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容

常用方法

int capacity() 返回当前容量

int length() 返回长度

char charAt(int index) 返回char在指定索引在这个序列的值

int indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引

String substring(int start) 返回一个新的String,其中包含此字符序列中当前包含的字符的子序列

String substring(int start,int end)返回一个新的String,它包含此序列当前所包含字符的子序列

StringBuilder append(...) 用于进行字符串拼接

StringBuilder delete(int start, int end) 删除此序列的子字符串中的字符

StringBuilder replace(int start, int end, String str) 用指定的String中的字符替换此序列的子字符
串中的String

StringBuilder insert(int offset,...) 在指定位置插入...

StringBuilder reverse() 把当前字符序列逆转

StringBuilder deleteCharAt(int index) 移除此序列指定位置上的char

String toString() 返回此序列中数据的字符串表示形式

StringBufferStringBuilder用法基本相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Illus1ion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值