String、StringBufer和StringBuilder

1. String类

 常用构造方法

  • String (String original)     

         创建一个String对象为original的拷贝
  • String (Char[] value)         
        用一个字符数组创建一个String对象
  • String (Char[] value, int offect, int count)    
       用一个字符数组从offect项开始的count个字符序列创建一个String对象

常用方法

  • public char charAt (int index)
       返回字符串中第index个字符  
  • public int indexOf (String str)
       返回字符串中出现str的第一个位置
  • public int indexOf (String str, int fromIndex)
       返回字符串中从fromIndex开始出现str的第一个位置
  • public boolean equalsIgnoreCase (String another)
       比较字符串与another是否一样(忽略大小写)
  • public String replace (char oldChar, char newChar)
       在字符串中用newChar字符替换oldChar字符
  • public boolean startsWith (String prefix)
       判断字符串是否以prefix字符串开头
  • public boolean endsWith (String suffix)
       判断字符串是否以suffix字符串结尾
  • public String toUpperCase ()
       返回一个字符串为该字符串的大写形式
  • public String toLowerCase ()
       返回一个字符串为该字符串的小写形式
  • public String substring (int beginIndex)
       返回该字符串从beginIndex开始到结尾的字符串
  • public String subString (int beginIndex, int endIndex)
       返回该字符串从beginIndex到endIndex结尾的字符串
  • public String trim ()
       返回将该字符串去掉开头和结尾空格后的字符串
  • public String[ ] split (String regex) 
       将字符串按照指定的分隔符regex分隔,返回分隔后的字符串数组

注意

判断两个字符串是否相等应该用“equals”方法,String的equals方法是判断两个字符串的内容是否相等,“==”是判断两个字符串对象的地址是否相等
public class TestString {
    public static void main(String args[]) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
        
        String s3 = "hello";
        String s4 = "hello";
        System.out.println(s3 == s4);
    }
}
以上代码运行结果如下:

2. StringBuffer类

 常用构造方法

  • StringBuffer ()       
        创建一个不包含字符序列的"空"的StringBuffer对象
  • StringBuffer (String str)       
        创建一个StringBuffer对象,包含与String对象str相同的字符序列 

 常用方法   

  • public StringBuffer append (String str)
  • public StringBuffer append (StringBuffer sbuf)
  • public StringBuffer append (char[ ] str)
  • public StringBuffer append (char[ ] str, int offset, int len)
  • public StringBuffer append (double d) 
  • public StringBuffer append (Object obj) 
  • ......
       为该stringBuffer对象添加字符序列,返回添加后的该stringBuffer对象引用
  • public StringBuffer insert (int offset, String str)
  • public StringBuffer insert (int offset, double d)
  • ......
      为该stringBuffer对象在指定位置插入字符序列,返回修改后的该stringBuffer对象引用
  • public StringBuffer delete (int start, int end)
       删除从start开始到end-1为止的字符串序列,返回删除后的该stringBuffer对象引用
  • public StringBuffer reverse (int start, int end)
       将字符序列逆序,返回修改后的该stringBuffer对象引用

  • 其他方法同String类似,如subString,indexOf等

3. StringBuilder类

     用法同StringBuffer类似

4. 三者区别

    1. String长度为不可变的字符序列,StringBuffer和StringBuilder为长度可变的字符序列。String在进行字符串处理时会生成新的对象,之前的对象就会被变为无用的对象而被垃圾回收器回收。而StringBuffer和StringBuilder在进行字符串处理时是在原对象的基础上进行的修改,不会生成新的对象,因此效率要优于String。
    2. StringBuffer和StringBuilder的原理和操作基本相同,区别在于StringBuffer是线性安全的,适合多线程中使用。而StringBuilder是非线性安全的,不能在多线程中使用。但在单线程中StringBuilder性能要优于StringBuffer。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StringStringBuffer和StringBuilder都是Java中用于处理字符串的类。 String是一个不可变的字符串类,也就是说一旦创建了一个String对象,它的值就不能被修改。每次对String进行修改操作时,都会创建一个新的String对象,这样会浪费内存空间和时间。因此,当需要频繁地对字符串进行修改时,使用String并不高效。 StringBuffer和StringBuilder是可变的字符串类,它们可以被用来进行字符串的修改操作。StringBuffer和StringBuilder的主要区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。这意味着在多线程环境下,如果有多个线程同时访问一个StringBuffer对象,它们是安全的;而多个线程同时访问一个StringBuilder对象时,可能会导致数据错乱。 使用StringBuffer和StringBuilder的场景通常是在需要频繁地对字符串进行修改的情况下。例如,在循环中拼接字符串、在递归函数中修改字符串等情况下,使用StringBuffer或StringBuilder可以提高性能。 如果需要将StringBuffer或StringBuilder转换为String对象,可以使用两种方式。一种是调用它们的toString()方法,将其转换为String对象。另一种是使用String的构造器String(StringBuffer buffer)来创建一个新的String对象,将StringBuffer或StringBuilder的内容复制到新的String对象中。 总结起来,String是不可变的字符串类,而StringBuffer和StringBuilder是可变的字符串类,适用于需要频繁修改字符串的场景。转换为String对象可以通过调用toString()方法或使用String的构造器来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值