String StringBuilder常用方法总结

在java中String类不可变的,创建一个String对象后不能更改它的值。所以如果需要对原字符串进行一些改动操作,就需要用StringBuilder类或者StringBuffer类,StringBuilder比StringBuffer更快一些,缺点是StringBuilder不是线程安全的,但在算法竞赛中一般我们用不到多线程。所以,主要推荐使用StringBuilder类。

当需要单独对字符串中的某个字符进行操作时,我们可以将其转换成字符数组或者转换其为StringBuilder字符
注意字符串和字符数组的转换

        String str = "this is str";
        char[] ch = str.toCharArray();
        ch[0] = '1';
        String str2 = String.valueOf(ch);
        System.out.println(str2);

上述方法可以用在如果想要修改字符串中的某个字符。也可以使用StringBuilder的setCharAt(位置,字符值)方法

        String str = "this is str";
        StringBuilder sb = new StringBuilder(str);
        sb.setCharAt(0,'1');
        String str2 = sb.toString();
        System.out.println(str2);

String

String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。

//String有两种遍历方式,第一种charAt()方法;第二种是先转化为字符数组,再挨个遍历
1 charAt(int i);//返回索引i处的字符
2 toCharArray();//返回此字符串的字符数组
3 length();//返回此字符串的长度
4 isEmpty();//判空 当length()为0时返回true
//String的比较
5 compareTo(String anotherString)//按字典顺序比较两个字符串
6 compareToIgnoreCase(String anotherString)//按字典顺序且不区分大小写比较两个字符串
7 equals(String anotherString)//判断两个字符串是否相等,相等返回true否则返回false
8 equalsIgnoreCase(String str)//同上,不区分大小写。

**compareTo()**和compareToIgnoreCase()方法的返回值:其实是返回a和b第一个不同字符的差值。
a.compareTo(b)如果a > b 返回大于0的整数;如果a == b 返回0;如果a < b 返回小于0的整数

//String的搜索(某个字符可以通过下标int index来确定,某个子串的话参数为String)
indexOf(int ch);// 返回指定字符在此字符串中第一次出现的索引(找不到返回-1)
indexOf(int ch, int fromindex); // 同上, 从指定索引开始搜索
indexOf(String str);//返回子串在此字符串中第一次出现的索引
indexOf(String str, int fromindex);同上,从指定索引开始搜索

lastIndexOf(int ch);//返回指定字符在此字符串最后一次出现的索引
lastIndexOf(int ch, int fromindex);//同上, 从指定索引开始搜索
lastIndexOf(String str);//返回子串在此字符串最后一次出现的索引
lastIndexOf(String str, int fromindex);//同上, 从指定索引开始搜索

startsWith(String prefix);// 检查是否以某一前缀开始(返回true,或者false)
//字符串拆分
split(String regex); // 根据正则表达式拆分
//提取子字符串
substring(int beginIndex, int endIndex);//返回从begin开始到end-1结束的子串
toUpperCase(); //将此字符串中的所有字母都换为大写
toLowerCase()//将此字符串中的所有字母都换为小写

StringBuilder

StringBuilder一个可变的字符序列。

在 Java 字符串的学习中,我们知道了字符串具有不可变性,当频繁操作字符串时候,会在常量池中产生很多无用的数据

而 StringBuilder 与 String 不同,它具有可变性。相较 String 类不会产生大量无用数据,性能上会大大提高。

因此对于需要频繁操作字符串的场景,建议使用 Stringbuilder 类来代替 String 类。

构造方法

StringBuilder() 构造一个空字符串生成器,初始容量为 16 个字符;

StringBuilder(int catpacity) 构造一个空字符串生成器,初始容量由参数 capacity 指定;

StringBuilder(CharSequence seq) 构造一个字符串生成器,该生成器包含与指定的 CharSequence 相同的字符。;

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

StringBuilder();//构建一个空的可变字符串。
StringBuilder(String str);//构建一个值为str的可变字符串。
StringBuilder s = new StringBuilder();//
StringBuilder s1 = new StringBuilder("123456");//123456

System.out.println(s); //可以直接输出
**字符串反转**
//reverse();
System.out.println(s.reverse()); 

遍历:

charAt(int i);// 返回索引i位置的字符
length();//返回此字符串的长度

StringBuilder s = new StringBuilder("123");
for(int i = 0; i < s.length(); i++)
	System.out.println(s.charAt(i)+" ");// 1 2 3
	输出:123

1.字符串连接

append(String str);//在此字符串追加str。
append(StringBuilder str);//在此字符串追加str。
append(char[] str, int offset, int len);//将char的子数组追加到此字符串

 StringBuilder s = new StringBuilder("123");
StringBuilder s1 = new StringBuilder("456");
s.append(s1);
System.out.print(s);// 123456

输出:123456

2.获取容量

 int capacity() 方法来获取当前容量,容量指定是可以存储的字符数(包含已写入字符),超过此数将进行自动分配。

3.字符串中某个字符替换

setCharAt(int index, char ch);//将指定索引处的字符替换为ch

4.字符串截取

substring(int start);//返回此字符串从start开始至length-1结束的String
substring(int start, int end);//返回此字符串从start开始至end-1结束的String
toString();//返回此序列中的String表示形式。
(注意以上方法的返回值都是String而不是StringBuilder)

5查找

indexOf(String str);//返回子字符串第一次出现的索引
indexOf(String str, int fromIndex);//同上,从指定位置查找

lastIndexOf(String str);//返回子字符串最后一次出现的索引
lastIndexOf(String str, int fromIndex);//同上,从指定位置查找

6删除

delete(int start, int end);//移除此序列从start到end-1的字符串
deleteCharAt(int index);//移除指定索引上的char

StringBuilder s = new StringBuilder("123");
		StringBuilder s1 = new StringBuilder("456");
		s.delete(0, 1);
		s1.deleteCharAt(1); 
		System.out.println(s);// 23
		System.out.println(s1);// 46

输出:
23
46
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StringBuilder类没有提供substring方法。 在引用中提到了使用StringBuilder的append方法来修改字符串,但是没有提到substring方法。substring方法String类提供的,用于截取字符串的指定范围。 请注意区分使用StringBuilderString的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [String/StringBuilder字符串常用几种方法](https://blog.csdn.net/weixin_68138130/article/details/125697033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java哈夫曼编码的文件的压缩与解压.docx](https://download.csdn.net/download/weixin_44609920/85869302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [StringStringBuilder总结](https://blog.csdn.net/weixin_69325800/article/details/124953770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值