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。

你可能感兴趣的:(Java基础)