StringBuilder类类似于String类。这两者之间的主要区别是,您可以更改StringBuilder对象的内容,但您不能更改String对象的内容。回想一下,String对象是不可变的(immutable)。这意味着一旦设置了String对象的内容,就不能更改它所保存的字符串值。
看一个例子:
String name; name = "George"; name = "Sally";
这里的name变量从George变成Sally的时候并没有改变的值,而是直接将一个新的对象Sally赋值给了name变量。
与string不同,stringbulider可以更改,插入,删除一个字符串中特定的字符。对于一个stringbulider类型的对象来说,它可以改变字符串的长度,相比于string类,这可以提高程序的效率。
2、构造器StringBuilder city = new StringBuilder("Charleston"); System.out.println(city);
这段代码创建了一个StringBuilder对象,并将其地址分配给city变量。该对象用字符串“Charleston”初始化。如此代码所示,我们可以将字符串生成器对象传递给println和print方法。StringBuilder类的一个限制是不能直接将string类的对象赋值给它:
StringBuilder city = "Charleston"; // ERROR!!! Will not work!
我们必须使用new语句并调用构造器才可以创建StringBuilder对象。
3、一些方法StringBuilder类提供了很多和string类似的方法:
char charAt(int position) void getChars(int start, int end, char[] array, int arrayStart) int indexOf(String str) int indexOf(String str, int start) int lastIndexOf(String str) int lastIndexOf(String str, int start) int length() String substring(int start) String substring(int start, int end)
当然,StringBuilder类也提供了一些string没有的方法。
(1)append方法StringBuilder类有一个名为append的方法,它有几个重载版本,这些方法接受一个参数,该参数可以是任何原始数据类型、以及char数组和string对象。它们将其参数的string表示形式添加到调用对象的末尾。
StringBuilder str = new StringBuilder(); // Append values to the object. str.append("We sold "); // Append a String object. str.append(12); // Append an int. str.append(" doughnuts for $"); // Append another String. str.append(15.95); // Append a double. // Display the object's contents. System.out.println(str);
We sold 12 doughnuts for .95(2)insert方法
StringBuilder类也有几个名为insser的方法,它也有几个重载版本,该方法将值插入调用的对象中。这些方法接受两个参数:一个int,它指定应该开始插入的位置;另一个是要插入的内容。要插入的内容可以是任何原始数据类型、char数组或string对象。
StringBuilder str = new StringBuilder("New City"); str.insert(4, "York "); System.out.println(str);
第一行语句创建一个用字符串“New City”初始化的StringBuilder对象。第二个语句将字符串“York”插入到StringBuilder对象的第四个字符后面,也就是空格后面。当前对象中位置4后的所有字符都被移到右边。在内存中,StringBuilder对象会自动扩展其大小,以适应插入的字符。如果我们运行这个程序,将打印New York City。
再看一个例子:
char cArray[] = { '2', '0', ' ' }; StringBuilder str = new StringBuilder("In July we sold cars."); str.insert(16, cArray); System.out.println(str);
In July we sold 20 cars(3)与删除有关的方法
StringBuilder str = new StringBuilder("I ate 100 blueberries!"); // Display the StringBuilder object. System.out.println(str); // Delete the '0'. str.deleteCharAt(8); // Delete "blue". str.delete(9, 13); // Display the StringBuilder object. System.out.println(str); // Change the '1' to '5' str.setCharAt(6, '5'); // Display the StringBuilder object. System.out.println(str);
I ate 100 blueberries! I ate 10 berries! I ate 50 berries!(4)toString方法
StringBuilder strb = new StringBuilder("This is a test."); String str = strb.toString();二、Tokenizing Strings
先看下面的这些字符串:
"peach raspberry strawberry vanilla" "17;92;81;12;46;5" "3-22-2018" /home/rsullivan/data
这些字符串都有其分隔符(空格、分号;-;/),将字符串按照分隔符分割成一个一个小字符串就是 Tokenizing Strings,string类有一个split方法可以进行这样的 *** 作。
public class SplitDemo1 { public static void main(String[] args) { // Create a string to tokenize. String str = "one two three four"; // Get the tokens, using a space delimiter. String[] tokens = str.split(" "); // Display the tokens. for (String s : tokens) System.out.println(s); } }
one two three four
在前面的示例中,我们将一个空格传递给了split方法,这就指定空格是分隔符。拆分方法还允许我们使用多字符分隔符。这意味着我们不限于单个字符作为分隔符,比如分隔符可以是完整的单词:
// Create a string to tokenize. String str = "one and two and three and four"; // Get the tokens, using " and " as the delimiter. String[] tokens = str.split(" and "); // Display the tokens. for (String s : tokens) System.out.println(s);
one two three four
前面的代码演示了多字符分隔符(包含多个字符的一个分隔符)。我们还可以指定一系列的字符,其中每个单独的字符都是一个分隔符。比如我们希望@和.都是分隔符,可以将它们放进括号中:"[@.]"
// Create a string to tokenize. String str = "joe@gaddisbooks.com"; // Get the tokens, using @ and . as delimiters. String[] tokens = str.split("[@.]"); // Display the tokens. for (String s : tokens) System.out.println(s);
joe gaddisbooks com
string类还有一个方法用于去除空格,叫做trim:
// Create a string with leading and trailing whitespaces. String str = " one;two;three "; // Trim leading and trailing whitespace. str = str.trim(); // Tokenize the string using the semicolon as a delimiter. String[] tokens = str.split(";"); // Display the tokens. for (String s : tokens) { System.out.println("*" + s + "*"); }
运行程序,将打印:
*one* *two* *three*
而不是:
* one* *two* *three *
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)