一、String

  • String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

二、StringBuffer & StringBuilder

  • 当对字符串进行修改的时候,特别是字符串对象经常改变的情况下,需要使用 StringBuffer 和 StringBuilder 类。

  • 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

  • StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

  • 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

  • 三者的继承结构

    alt

三、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)
  • 测试此字符串是否以指定的前缀开始。还可以指定开始检测位置下标
5、boolean endsWith(String suffix)
  • 测试此字符串是否以指定的后缀结束。
6、boolean equals(Object anObject)
  • 将此字符串与指定的对象比较。已覆写,比较内容是否相等
7、void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
  • 将字符从此字符串复制到目标字符数组。
8、int hashCode()
  • 返回此字符串的哈希码。
9、int indexOf(int ch)
  • 返回指定字符在此字符串中第一次出现处的索引。 没有则返回-1
10、 int indexOf(int ch, int fromIndex)
  • 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
11、 int indexOf(String str)
  • 返回指定子字符串在此字符串中第一次出现处的索引。
12、int indexOf(String str, int fromIndex)
  • 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
13、int lastIndexOf(int ch)
  • 返回指定字符在此字符串中最后一次出现处的索引。
14、int lastIndexOf(int ch, int fromIndex)
  • 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
15、int lastIndexOf(String str)
  • 返回指定子字符串在此字符串中最右边出现处的索引。
16、int lastIndexOf(String str, int fromIndex)
  • 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
17、int length()
  • 返回此字符串的长度。
18、boolean matches(String regex)
  • 告知此字符串是否匹配给定的正则表达式。
19、String replace(char oldChar, char newChar)
  • 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
20、String replace(CharSequence target, CharSequence replacement)
  • 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
21、String replaceAll(String regex, String replacement)
  • 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
22、String[] split(String regex)
  • 根据给定正则表达式的匹配拆分此字符串。
23、String[] split(String regex, int limit)
  • 根据匹配给定的正则表达式来拆分此字符串。
24、String substring(int beginIndex)
  • 返回一个新的字符串,它是此字符串的一个子字符串。
25、String substring(int beginIndex, int endIndex)
  • 返回一个新字符串,它是此字符串的一个子字符串。
26、char[] toCharArray()
  • 将此字符串转换为一个新的字符数组。
27、 String toLowerCase()
  • 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
28、String toLowerCase(Locale locale)
  • 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
29、 String toUpperCase()
  • 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
30、String toUpperCase(Locale locale)
  • 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写
31、 String toString()
  • 返回此对象本身。

四、StringBuffer常用方法

1、public StringBuffer append(char c)
  • 将char参数的字符串表示附加到此序列
2、deleteCharAt(int index)
  • 该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。
3、public StringBuffer delete(int start,int end)
  • 该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。
4、insert(int index, char c)
  • 该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。
5、public StringBuffer reverse()
  • 该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。
6、public void setCharAt(int index, char ch)
  • public void setCharAt(int index, char ch)该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。
7、length方法
  • 该方法的作用是获取字符串长度

五、StringBuilder常用方法

1、append(char c)
  • 将char参数的字符串表示附加到此序列。
2、charAt(int index)
  • 返回 char在指定索引在这个序列值。
3、delete(int start, int end)
  • 删除此序列的子字符串中的字符。
4、deleteCharAt(int index)
  • 删除 char在这个序列中的指定位置。
5、length()
  • 返回长度(字符数)
6、StringBuilder replace(int start, int end, String str)
  • 用指定的String中的字符替换此序列的子字符串中的 String 。
7、StringBuilder reverse()
  • 导致该字符序列被序列的相反代替。
8、void setCharAt(int index, char ch)
  • 指定索引处的字符设置为ch
9、substring(int start)
  • 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。
10、substring(int start, int end)
  • 返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。
11、toString()
  • 返回表示此顺序中的数据的字符串。