1. For string manipulation, String belongs to immutable class, while StringBuilder belongs to mutable class.
2. StringBuilder is similar to StringBuffer, both are string buffers. StringBuilder is not thread-safe. Generally speaking, thread safety is from high to low: StringBuffer>StringBuilder>String.
3. In terms of execution efficiency, StringBuilder>StringBuffer>String. Therefore, when the amount of data to be operated is relatively small, the String class can be used;
If you are operating a large amount of data under a single thread, StringBuilder is preferred; if you are operating a large amount of data under multiple threads, StringBuffer is preferred.
4.StringBuffer can change the length of the string append() method, which is more efficient than "+".
In fact, when the String string performs the + operation, it first creates a StringBuilder, then calls the append() method of the StringBuilder, and finally calls the toString method of the StringBuilder to return the result:
Such as:String s = "Hello"; s += "world"; Equivalent to: Strin s = "Hello"; StringBuilder sb = new StringBuilder(s); s.append("world"); s = sb.toString();
Common methods of String class:
Method summary | |
---|---|
char |
charAt(int index) Returns the char value . |
int |
codePointAt(int index) Returns the character (Unicode code point) at the specified index. |
int |
codePointBefore(int index) Returns the character (Unicode code point) preceding the specified index. |
int |
codePointCount(int beginIndex, int endIndex) Returns the number of Unicode code points in String the specified text range of this . |
int |
compareTo(String anotherString) Compare two strings lexicographically. |
int |
compareToIgnoreCase(String str) Compares two strings lexicographically, regardless of case. |
String |
concat(String str) Concatenates the specified string to the end of this string. |
boolean |
contains(CharSequence s) Returns true if and only if this string contains the specified sequence of char values. |
boolean |
contentEquals(CharSequence cs) CharSequence Compares this string to the specified . |
boolean |
contentEquals(StringBuffer sb) StringBuffer Compares this string to the specified . |
static String |
copyValueOf(char[] data) Returns a String representing this sequence of characters in the specified array. |
static String |
copyValueOf(char[] data, int offset, int count) Returns a String representing this sequence of characters in the specified array. |
boolean |
endsWith(String suffix) Tests whether this string ends with the specified suffix. |
boolean |
equals(Object anObject) Compares this string to the specified object. |
boolean |
equalsIgnoreCase(String anotherString) Compare this String to another String , regardless of case. |
static String |
format(Locale l, String format, Object... args) Returns a format string using the specified locale, format string, and arguments. |
static String |
format(String format, Object... args) Returns a format string using the specified format string and arguments. |
byte[] |
getBytes() String Encode this as a sequence of bytes using the platform's default character set , and store the result into a new byte array. |
byte[] |
getBytes(Charset charset) Encodes this into a byte sequence using the given charset , and stores the result into a new byte array. String |
void |
getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) Obsolete. The method fails to convert characters to bytes correctly. As of JDK 1.1, the preferred way to accomplish this conversion is through the getBytes() method , which uses the platform's default character set. |
byte[] |
getBytes(String charsetName) String Encodes this into a sequence of bytes using the specified charset , and stores the result into a new byte array. |
void |
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Copies characters from this string to the destination character array. |
int |
hashCode() Returns the hash code for this string. |
int |
indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 |
int |
indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
int |
indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 |
int |
indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
String |
intern() 返回字符串对象的规范化表示形式。 |
boolean |
isEmpty() 当且仅当 length() 为 0 时返回 true。 |
int |
lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 |
int |
lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
int |
lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。 |
int |
lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
int |
length() 返回此字符串的长度。 |
boolean |
matches(String regex) 告知此字符串是否匹配给定的正则表达式。 |
int |
offsetByCodePoints(int index, int codePointOffset) 返回此 String 中从给定的 index 处偏移 codePointOffset 个代码点的索引。 |
boolean |
regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
boolean |
regionMatches(int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
String |
replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
String |
replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。 |
String |
replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
String |
replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
String[] |
split(String regex) 根据给定正则表达式的匹配拆分此字符串。 |
String[] |
split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。 |
boolean |
startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 |
boolean |
startsWith(String prefix, int toffset) 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
CharSequence |
subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,它是此序列的一个子序列。 |
String |
substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 |
String |
substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 |
char[] |
toCharArray() 将此字符串转换为一个新的字符数组。 |
String |
toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
String |
toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
String |
toString() 返回此对象本身(它已经是一个字符串!)。 |
String |
toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
String |
toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
String |
trim() 返回字符串的副本,忽略前导空白和尾部空白。 |
static String |
valueOf(boolean b) 返回 boolean 参数的字符串表示形式。 |
static String |
valueOf(char c) 返回 char 参数的字符串表示形式。 |
static String |
valueOf(char[] data) 返回 char 数组参数的字符串表示形式。 |
static String |
valueOf(char[] data, int offset, int count) 返回 char 数组参数的特定子数组的字符串表示形式。 |
static String |
valueOf(double d) 返回 double 参数的字符串表示形式。 |
static String |
valueOf(float f) 返回 float 参数的字符串表示形式。 |
static String |
valueOf(int i) 返回 int 参数的字符串表示形式。 |
static String |
valueOf(long l) 返回 long 参数的字符串表示形式。 |
static String |
valueOf(Object obj) 返回 Object 参数的字符串表示形式。 |
StringBuilder方法:
方法摘要 | |
---|---|
StringBuilder |
append(boolean b) 将 boolean 参数的字符串表示形式追加到序列。 |
StringBuilder |
append(char c) 将 char 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(char[] str) 将 char 数组参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(char[] str, int offset, int len) 将 char 数组参数的子数组的字符串表示形式追加到此序列。 |
StringBuilder |
append(CharSequence s) 向此 Appendable 追加到指定的字符序列。 |
StringBuilder |
append(CharSequence s, int start, int end) 将指定 CharSequence 的子序列追加到此序列。 |
StringBuilder |
append(double d) 将 double 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(float f) 将 float 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(int i) 将 int 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(long lng) 将 long 参数的字符串表示形式追加到此序列。 |
StringBuilder |
append(Object obj) 追加 Object 参数的字符串表示形式。 |
StringBuilder |
append(String str) 将指定的字符串追加到此字符序列。 |
StringBuilder |
append(StringBuffer sb) 将指定的 StringBuffer 追加到此序列。 |
StringBuilder |
appendCodePoint(int codePoint) 将 codePoint 参数的字符串表示形式追加到此序列。 |
int |
capacity() 返回当前容量。 |
char |
charAt(int index) 返回此序列中指定索引处的 char 值。 |
int |
codePointAt(int index) 返回指定索引处的字符(统一代码点)。 |
int |
codePointBefore(int index) 返回指定索引前的字符(统一代码点)。 |
int |
codePointCount(int beginIndex, int endIndex) 返回此序列指定文本范围内的统一代码点。 |
StringBuilder |
delete(int start, int end) 移除此序列的子字符串中的字符。 |
StringBuilder |
deleteCharAt(int index) 移除此序列指定位置上的 char 。 |
void |
ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。 |
void |
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst 。 |
int |
indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 |
int |
indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
StringBuilder |
insert(int offset, boolean b) 将 boolean 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, char c) 将 char 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, char[] str) 将 char 数组参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int index, char[] str, int offset, int len) 将数组参数 str 子数组的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int dstOffset, CharSequence s) 将指定 CharSequence 插入此序列中。 |
StringBuilder |
insert(int dstOffset, CharSequence s, int start, int end) 将指定 CharSequence 的子序列插入此序列中。 |
StringBuilder |
insert(int offset, double d) 将 double 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, float f) 将 float 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, long l) 将 long 参数的字符串表示形式插入此序列中。 |
StringBuilder |
insert(int offset, Object obj) 将 Object 参数的字符串表示形式插入此字符序列中。 |
StringBuilder |
insert(int offset, String str) 将字符串插入此字符序列中。 |
int |
lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。 |
int |
lastIndexOf(String str, int fromIndex) 返回最后一次出现的指定子字符串在此字符串中的索引。 |
int |
length() 返回长度(字符数)。 |
int |
offsetByCodePoints(int index, int codePointOffset) 返回此序列中的一个索引,该索引是从给定 index 偏移 codePointOffset 个代码点后得到的。 |
StringBuilder |
replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
StringBuilder |
reverse() 将此字符序列用其反转形式取代。 |
void |
setCharAt(int index, char ch) 将给定索引处的字符设置为 ch 。 |
void |
setLength(int newLength) 设置字符序列的长度。 |
CharSequence |
subSequence(int start, int end) 返回一个新字符序列,该字符序列是此序列的子序列。 |
String |
substring(int start) Returns a new one String containing the subsequence of the characters currently contained in this character sequence. |
String |
substring(int start, int end) Returns a new one String containing the subsequence of the characters currently contained in this sequence. |
String |
toString() Returns a string representation of the data in this sequence. |
void |
trimToSize() Try reducing the storage space used for character sequences. |