appendJava StringBuffer对象
发布网友
发布时间:2024-10-13 04:27
我来回答
共1个回答
热心网友
时间:2024-12-05 20:07
在Ivor Horton的经典著作《Java 2 入门经典(JDK 5)》中,关于字符串处理的部分,第4章专门讲解了StringBuffer对象的append方法。这一方法主要用来向StringBuffer对象中添加其他内容,例如字符串或字符数组。在第4.4小节中,作者通过实例演示了如何使用append()方法。
首先,创建了一个StringBuffer对象buf,初始化为"Hard "。接着,定义了一个字符串aString为"Waxworks"。然后,尝试将aString从索引3开始的四个字符"work"追加到buf中。然而,需要注意的是,实际运行的结果是buf变为"Hard w",这是因为append()方法的参数处理方式。如果指定的起始索引3和结束索引4,它会包含从3开始到4(不包括4)的子串,即"work"的前两个字符。
如果将参数改为buf.append(aString,3,3),则不会添加任何子串,buf保持不变,仍然是"Hard "。而如果尝试使用buf.append(aString,3,2),由于结束索引小于起始索引,会导致"IndexOutOfBoundsException"异常。
然而,如果append()的参数是字符数组,如char[] text = {'W', 'a', 'x', 'w', 'o', 'r', 'k', 's'},结果则与预期相符,buf会包含完整的子串"Hard work"。这是因为对于字符数组,append()方法会直接处理整个子数组,不会受索引*。
源代码中的具体实现如下:
java
StringBuffer buf = new StringBuffer("Hard ");
char[] text = {'W', 'a', 'x', 'w', 'o', 'r', 'k', 's'};
buf.append(text, 3, 4); // buf包含字符串"Hard work"
在理解append()方法时,参数的类型和指定的索引范围对结果有重要影响。对于字符数组,直接处理整个子数组,而对于字符串,需要明确指定子串的范围。