String与StringBuilder

String与StringBuilder

String

  • 不可变性:String对象一单创建,无法修改,其值夜无法改变,每次对String操作都会创建一个新的String的对象,,而不是修改原有的对象
  • 常量池:javat通过字符串常量池来重用相同值的String对象,节省空间,提高性能,
  • 丰富的方法;提供许多的方法

new String("Hello Word ")

在使用时,会创建两个对象,都存在堆中

  • 首先,在堆内存中创建一个新的String对象用来传入字符串参数,并存储在常量池中复用
  • 然后使用new String 创建第二个String对象,式独立的,不会重用字符串常量池的字符串,
String的常用方法
  • length():返回字符串的长度(字符个数)
  • charAt(int index):返回指定索引位置的字符
  • substring( int beginIndex):返回指定索引开始到字符末尾的子字符串
  • substring( int beginIndex ,int endIndex)返回指定范围内的子字符串
  • equals(Object o):比较字符串是否与指定对象相等
  • equalsIgnoreCase(String str):比较字符串是否相等,忽略大小写
  • concat(String str):将指定的字符串连接到原始字符串的末尾
  • compareTo(String str):按字典顺序比较字符串。
  • indexOf(String str):返回指定字符串在原始字符串中第一次出现的索引位置。
  • lastIndexOf(String str):返回指定字符串在原始字符串中最后一次出现的索引位置。
  • startsWith(String prefix):判断字符串是否以指定的前缀开头。
  • endsWith(String suffix):判断字符串是否以指定的后缀结尾。
  • toUpperCase():将字符串转换为大写字母形式。
  • toLowerCase():将字符串转换为小写字母形式。
  • valueOf():将其他类型的数据转换为字符串。
  • trim():去除字符串两端的空格。
  • replace(char oldChar, char newChar):替换字符串中的字符。
  • split(String regex):将字符串按指定的正则表达式拆分为字符串数组。
  • contains(CharSequence sequence):判断字符串是否包含指定的字符序列。
  • isEmpty():判断字符串是否为空字符串。

StringBuilder

StringBuilder是Java中的一个类,用于高效地进行字符串操作。它属于可变字符串类,用于处理频繁的字符串拼接、插入和修改操作。与不可变的String类不同,StringBuilder允许对字符串进行原地修改,避免了频繁创建新的字符串对象,从而提升了性能。

  • 可变性:StringBuilder对象的值可以被修改。可以通过添加、插入、替换和删除字符来修改字符串的内容,而不会创建新的对象。这使得StringBuilder在需要频繁修改字符串的场景中非常有用。
  • 高效的字符串拼接:通过append()方法,可以将字符串片段追加到StringBuilder对象的末尾。这种方式避免了使用+操作符进行字符串拼接时创建大量中间字符串的问题,从而提高了性能。

StringBuilder常用方法
首先需要创建StringBuilder对象:

    public StringBuilder(): 创建一个空的StringBuilder对象。
    
    public StringBuilder(String str): 使用指定的字符串初始化StringBuilder对象。

StringBuilder的常用方法有:

    append(): 在尾部追加内容。
    delete(): 删除指定范围内的内容。
    replace(): 替换指定范围内的内容。
    insert(): 在指定位置插入内容。
    reverse(): 反转字符串。

StringBuilder的许多方法返回值都是StringBuilder类型。由于方法返回了对象本身的引用,可以通过链式调用方式简洁地书写代码:

    StringBuilder buf = new StringBuilder();
    buf.append("ibm").append("java")
       .insert(3, "oracle")
       .replace(9, 13, "JAVA");
    System.out.println(buf.toString());

通过链式调用,可以连续执行多个方法操作,从而实现对字符串的快速处理。最后通过toString()方法获取最终的字符串结果,并进行输出。

String和StringBuilder区别

String和StringBuilder是Java中用于处理字符串的两个类,它们在以下几个方面有所区别:

*可变性:String是不可变类,即一旦创建,其值不可更改。每次对String进行修改时,都会创建一个新的String对象。而StringBuilder是可变类,允许对字符串进行原地修改,避免了频繁创建新的对象。 *

性能:由于String的不可变性,每次对String进行拼接、替换或删除操作时,都会创建新的String对象,导致内存的频繁分配和回收,性能较低。而StringBuilder允许原地修改字符串,避免了这种性能损耗,在大量字符串操作时通常比String效率更高。

使用场景:String适用于不需要频繁修改字符串内容的情况,例如字符串的比较、提取子串等。StringBuilder适用于需要频繁进行字符串拼接、插入和修改的情况,例如动态生成字符串、字符串的动态拼接等。

总结起来,String适用于不需要修改的字符串操作,而StringBuilder适用于需要频繁修改字符串的操作,根据具体的需求选择合适的类可以提高代码的性能和效率。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值