String

本文总结了Java中String对象的特性,包括其不可变性、常用方法如split、indexOf、substring、concat以及大小写转换。同时介绍了StringBuilder类用于高效字符串连接的操作,如append、insert、delete等。

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

String内容总结

String

1、 String是不变字符串 ,为不可变对象,一旦被创建,就不能修改它的值,对于已 经存在的

2、String对象的修改都是重新创建一个新的对象,然后把新的值保存进去 String 是final类,即不能被继承

3、字符串本质就是字符数组,char[];字节数组和字符数组都可以和字符串进行相互的转换

4、字符串字面值"abc"也可以看成是一个字符串对象

String字符串的拆分

str.split(String str1);

用str1将字符串str分割成数组

String str19 = "cheng!jun&yu";
String[] str20 = str19.split("!|&");
System.out.println(str20.length);
for(int i= 0;i<str20.length;i++){
    System.out.println(str20[i]);
}

获取字符串长度

str.length();

String str1="chengjunyu";
int len=str1.length();
System.out.println(len);

获取字符在字符传中出现的位置

str.indexOf(String str);

从头开始查找str在字符串中第一次出现的位置;

str.indexOf(String str,int fromIndex);

从下标fromIndex处开始开始查找str在字符串中第一次出现的位置;

str.lastIndexOf(String str);

从尾部开始查找str在字符串中最后一次出现的位置;

str.lastIndexOf(String str,int fromIndex);

从下标fromIndex处开始开始查找str在字符串中最后一次出现的位置;

String str1 ="chengjunyu";
int len = str1.length();
System.out.println(len);
int num1 = str1.indexOf("n");
int num2 = str1.indexOf("n",4);
int num3 = str1.lastIndexOf("n");
int num4 = str1.lastIndexOf("n",6);
System.out.println(num1);//3
System.out.println(num2);//7
System.out.println(num3);//7
System.out.println(num4);//3

获取字符串中某一个位置的字符

str.charAt(int index);

查找字符串中下标为index位置出现的字符串

String str2 = "chengjunyu";
char str3 = str2.charAt(5);
System.out.println(str3);//j

截取字符串

str.substring(fromIndex,endIndex);

从fromIndex处开始截取到endIndex处结束,不包含下标为endIndex的字符;

str.substring(fromIndex);

从fromIndex处开始截取到最后;

String str2 = "chengjunyujun";
String str4 = str2.substring(2,5);
String str5 = str2.substring(5);
System.out.println(str4);
System.out.println(str5);

字符串连接

str2 = str.concat(String str1);

用concat连接两个字符城成为一个新的字符串

String str9 = "cheng";
String str10 = "junyu";
String str11=str9.concat(str10);
System.out.println(str11);//chengjunyu

字符串中字符的大小写转换

小写转大写:str.toUpperCase();

大写转小写:str.toLowerCase();

String str12 = "chengjunyu";
String str13 = str12.toUpperCase();
String str14 = str12.toLowerCase();
System.out.println(str13);//CHENGJUNYU
System.out.println(str14);//chengjunyu

字符串的比较

==与equals

注意==比较的是两个数组的地址

String s1 = new String("Hello Java"); //在堆空间创建对象
 String s2 = "Hello Java"; // 在常量池中创建
  System.out.println(s1 == s2); //fasle

equals方法比较的是两个字符串的值

  String s = "Hello";
  String s2  = "Hello";
  System.out.println(s == s2);//true

StringBuffer

StringBuffer

在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用“+”号完成字符串的连接操作;
这种连接字符串,代码性能非常低,解决这个问题的方法是使用StringBuffer类的方法。

StringBuffer的内部实现采用字符数组,默认数组的长度为16,超过数组大小时,动态扩充的算法是原来的长度*2+2
所以当我们预知要添加的数据长度时,建议使用带初始化容量的构造方法,来避免动态扩充的次数,从而提高效率。

StringBuffer类里的常用操作方法
public StringBuffer()                    构造一个空的StringBuffer对象
public StringBuffer(String str)               将指定的String变为StringBuffer的内容
public StringBuffer(CharSequence seq)            接收CharSequence接口的实例
public StringBuffer append(数据类型 b)           提供了很多的append()方法,用于进行字符串连接
public StringBuffer delete(int start,int end)        删除指定位置的内容
public int indexOf(String str)               字符串的查询功能
public StringBuffer insert(int offser,数据类型 b)      在指定位置上增加一个内容
public StringBuffer replace(int start,int end,String str)  将指定范围的内容替换成其他内容
public String substring(int start,int end)         截取指定范围的字符串
public String substring(int start)             字符换截取
public StringBuffer reverse()                字符串翻转

StringBuffer类方法一般是带synchronized修饰符,表示线程安全,一个一个排队


public class StringBufferDemo {
  public static void main(String[] args) {

​    StringBuffer sb = new StringBuffer();
​    sb.append("a").append("b").append(1);
​    System.out.println(sb.toString()); //结果:ab1
​    
​    String a = "a";
​    String b = "b";
​    String c = a+b+1;
​    System.out.println(c); //结果:ab1
​    //这样虽然输出结果一样,但是如此中间过程生成的对象数过多,导致性能降低,首先a对象、b对象、1对象、a+b对象、a+b+1对象
​      
  }
  }

StringBuild

在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生,下面就Stringbuilder的使用做个简要的总结:

创建Stringbuilder对象
  StringBuilder strB = new StringBuilder();

1、append(String str)/append(Char c):字符串连接

System.out.println("StringBuilder:"+strB.append("ch").append("111").append('c'));
//return "StringBuilder:ch111c"

2、toString():返回一个与构建起或缓冲器内容相同的字符串

System.out.println("String:"+strB.toString());
//return "String:ch111c"

3、appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this

System.out.println("StringBuilder.appendCodePoint:"+strB.appendCodePoint(2));
//return "StringBuilder.appendCodePoint:ch111c"

4、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)** strB.setCharAt(2, 'd');

System.out.println("StringBuilder.setCharAt:" + strB);
//return "StringBuilder.setCharAt:chd11c"

5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)

System.out.println("StringBuilder.insertString:"+ strB.insert(2, "LS"));
//return "StringBuilder.insertString:chLSd11c"
System.out.println("StringBuilder.insertChar:"+ strB.insert(2, 'L'));
//return "StringBuilder.insertChar:chLLSd11c"

6、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串

System.out.println("StringBuilder.delete:"+ strB.delete(2, 4));
//return "StringBuilder.delete:chSd11c"

StringBuffer

1、StringBuffer: 是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象,它只能通过构造函数来建立,如StringBuffer sb = new StringBuffer();

2、StringBuffer的值不能通过赋值符号对他进行赋值.如sb = "welcome to here!"

3、StringBuffer的对象被建立以后,在内存中就会分配内存空间,并初始保存 一个null.向StringBuffer 中赋值的时候可以通过它的append方法. 如 sb.append("hello");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值