Bootstrap

Java中String,StringBuffer,StringBuilder常用方法及使用实例

1 . String类中常用方法

  1. char charAt(int index)
    返回指定索引处的 char 值。

  2. int compareTo(String anotherString)
    按字典顺序比较两个字符串。实际上返回的是字符ASCII码的差值,但通常只关心正负还是0

  3. boolean contains(CharSequence s)
    当且仅当此字符串包含指定的 char 值序列时,返回 true。

  4. boolean startsWith(String prefix)
    测试此字符串是否以指定的前缀开始。还可以指定开始检测位置下标
    boolean endsWith(String suffix)
    测试此字符串是否以指定的后缀结束。
  5. boolean equals(Object anObject)
    将此字符串与指定的对象比较。已覆写,比较内容是否相等

  6. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
    将字符从此字符串复制到目标字符数组。

  7. int hashCode()
    返回此字符串的哈希码。

  8. int indexOf(int ch)
    返回指定字符在此字符串中第一次出现处的索引。 没有则返回-1
    int indexOf(int ch, int fromIndex)
    返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
    int indexOf(String str)
    返回指定子字符串在此字符串中第一次出现处的索引。
    int indexOf(String str, int fromIndex)
    返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

    int lastIndexOf(int ch)
    返回指定字符在此字符串中最后一次出现处的索引。
    int lastIndexOf(int ch, int fromIndex)
    返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
    int lastIndexOf(String str)
    返回指定子字符串在此字符串中最右边出现处的索引。
    int lastIndexOf(String str, int fromIndex)
    返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。

  9. int length()
    返回此字符串的长度。

  10. boolean matches(String regex)
    告知此字符串是否匹配给定的正则表达式。
  11. String replace(char oldChar, char newChar)
    返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
    String replace(CharSequence target, CharSequence replacement)
    使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
    String replaceAll(String regex, String replacement)
    使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

  12. String[] split(String regex)
    根据给定正则表达式的匹配拆分此字符串。
    String[] split(String regex, int limit)
    根据匹配给定的正则表达式来拆分此字符串。

  13. String substring(int beginIndex)
    返回一个新的字符串,它是此字符串的一个子字符串。
    String substring(int beginIndex, int endIndex)
    返回一个新字符串,它是此字符串的一个子字符串。
  14. char[] toCharArray()
    将此字符串转换为一个新的字符数组。
  15. String toLowerCase()
    使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
    String toLowerCase(Locale locale)
    使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
    String toUpperCase()
    使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
    String toUpperCase(Locale locale)
    使用给定 Locale 的规则将此 String 中的所有字符都转换为大写
  16. String toString()
    返回此对象本身。

public class StringOpera
{

public static void main(String[] args)
{
    String[] str1 = { "NBA", "ABC", "Mike", "NBA", "NG", "OK", "NBA" };
    stringSort(str1);
    stringPrint(str1);
    String str2 = "jhabchjabckokabc";
    System.out.println(substringCount(str2, "abc"));

    String strA = "tryyufgasdkjkabcdeijr";
    String strB = "asdabcde";
    String com = maxCommon(strA, strB);
    System.out.println(com);
}

// 获取两个字符串中最大公共子串
public static String maxCommon(String stringA, String stringB)
{
    String strMax = null, strMin = null;
    // 找到長度大的
    if (stringA.length() >= stringB.length())
    {
        strMax = stringA;
        strMin = stringB;
    } else
    {
        strMax = stringB;
        strMin = stringA;
    }

    // 双层循环
    for (int i = 0; i < strMin.length(); i++)
        for (int j = 0, l = strMin.length() - i; l != strMin.length() + 1; j++, l++)

        {
            String com = strMin.substring(j, l);
            if (strMax.contains(com))
                return com;
        }
    return null;
}

// 打印
public static void stringPrint(String[] str1)
{
    for (int i = 0; i < str1.length; i++)
        System.out.print(str1[i] + "  ");
}

// 字符串数组排序
public static void stringSort(String[] string)
{
    for (int i = 0; i < string.length - 1; i++)
        for (int j = i + 1; j < string.length; j++)
            if (string[i].compareTo(string[j]) > 0)
                StringOpera.swap(string, i, j);
}

// 子串出现次数
public static int substringCount(String str2, String substring)
{
    int count = 0;
    for (int index = 0; index < str2.length(); index++)
        if ((index = str2.indexOf(substring, index)) != -1)
        {
            index = index + substring.length();
            count = count + 1;
        }
    return count;
}

// 交换
public static void swap(String[] strArry, int i, int j)
{
    String temp = strArry[i];
    strArry[i] = strArry[j];
    strArry[j] = temp;
}

}

2. StringBuffer

用于存储数据的容器。类似于字符串缓冲区,池子不能修改,但是“内容”可以通过方法修改,最主要的两个方法就是 append 和 insert 方法
特点:
长度的可变的。
可以存储不同类型数据。
最终要转成字符串进行使用。
可以对字符串进行修改。

线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。


  1. StringBuffer append(data);尾部添加
    StringBuffer insert(index,data);指定未知插入

    eg:
    StringBuffer sb=new StringBuffer(“abc”);
    sb.append(“de”);
    //打印sb 为abcde


  2. StringBuffer delete(int start, int end)
    StringBuffer deleteCharAt(int index):删除指定位置的元素

    eg:
    sb.delete(0,sb.length());


  3. StringBuffer replace(start,end,string);
    void setCharAt(index,char);

  4. char charAt(index);
    int indexOf(string);

3. StringBuilder

功能和StringBuilder几乎一模一样,但是无线程安全,从1.5版本开始
为了提高效率,在单线程中尽量使用StringBuilder。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;