StringBuffer appen和insert之间有什么区别?

时间:2015-10-16 12:15:01

标签: java string stringbuffer

在我的java代码中我正在使用

Plain

任何人都告诉我这个StringBuffer sb = new StringBuffer(); String str = ""; sb.append(str + "abc"); //?? sb.insert(0,(str + "abc")); //?? sb.append(str + "abc");

之间有什么区别

3 个答案:

答案 0 :(得分:2)

在你的代码中,String str = "";你看不出差异,但有。{/ p>

  • 第一个追加到最后。
  • 第二个插入在开头。

请看这段代码:

1追加:

String str = "abc";
StringBuilder sb = new StringBuilder("123");
sb.append("abc"); // str = "123abc"
//                             ↑ abc is appended at the end of sb

来自API:

append(String)

  

将char数组参数的字符串表示形式追加到此序列。

2插入:

String str = "abc";
StringBuilder sb0 = new StringBuilder("123");
sb.insert(0, str); // str = "abc123"
//                           ↑ abc is inserted at position 0 of sb0
StringBuilder sb1 = new StringBuilder("123");
sb.insert(1, str); // str = "1abc23"
//                            ↑ abc is inserted at position 1 of sb1
StringBuilder sb3 = new StringBuilder("123");
sb.insert(2, str); // str = "12abc3"
//                             ↑ abc is inserted at position 2 of sb2
StringBuilder sb4 = new StringBuilder("123");
sb.insert(3, str); // str = "123abc"
//                              ↑ abc is inserted at position 3 of sb2

所以......我们可以推断出:StringBuilder.append == StringBuilder.insert(length)

insert(int offset, String str)

  

将char数组参数的字符串表示形式插入到此中   序列。   数组参数的字符将插入此序列的内容中,位于偏移量所指示的位置。此序列的长度会增加参数的长度。

答案 1 :(得分:1)

来自doc

appends()类似名称声音添加到数据类型的末尾,而inserts()将一个字符串插入另一个

doc中的示例

  

如果z引用当前内容为的字符串缓冲区对象   " start",然后方法调用z.append(" le")会导致字符串   缓冲区包含" startle",而z.insert(4," le")会改变   字符串缓冲区包含" starlet"。

在您的示例中,偏移量为0,因此它将插入字符串的开头。

  

注意:通常,如果sb引用StringBuffer的实例,那么   sb.append(x)与sb.insert(sb.length(),x)具有相同的效果。

答案 2 :(得分:1)

append()方法将字符串追加到末尾,但insert()方法在给定的偏移处将一个字符串插入另一个字符串。在append()方法中有单个参数,该参数值附加在字符串的末尾。在insert()方法中有2个参数,一个是offset(int类型),另一个是insert的值。

append()方法的示例: -

StringBuffer sb = new StringBuffer();
sb.append("abc");
sb.append("123");

输出:abc123

insert()方法的示例: -

StringBuffer sb = new StringBuffer();

sb.append(" ABC&#34); sb.insert(2" 123&#34);

输出:ab123c