黑马程序员技术交流社区

标题: 关于StringBuffer的一个小问题 [打印本页]

作者: 冯佩    时间: 2013-1-20 10:33
标题: 关于StringBuffer的一个小问题
StringBuffer是一个容器,可以操作多个数据类型,这其中包括引用数据类型吗?为什么?
作者: 黄锦成    时间: 2013-1-20 10:51
引用数据类型有啊!例如String。其他自定义类型如Person,Student这些不行。StringBuffer是一个用来动态创建字符串的容器。
作者: 陈丽莉    时间: 2013-1-20 10:53
本帖最后由 陈丽莉 于 2013-1-20 10:54 编辑

      包括引用数据类型中的数组和StringBuffer类。
    原因如下:
      基本数据类型有:整数型、浮点型、字符型和布尔型;引用数据类型指的是:类、接口和数组。
    StringBuffer中可以存储的类型为:布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串字符串StringBuffer类等。
   
作者: 黑马张英涛    时间: 2013-1-20 11:08
本帖最后由 黑马张英涛 于 2013-1-20 11:14 编辑

你们看文档不够仔细呦, StringBuffer可以存放任何类型啊,但是,他存放的不是对象的实体,而是通过调用对象类的toString()方法得到的对象的字符串形式,然后将这个字符串存放在容器中,举个简单的例子:
  1. public class MyTest {        
  2.         public static void main(String[] args){
  3.                 StringBuffer sb = new StringBuffer();
  4.                 Person p = new Person();
  5.                 System.out.println(sb.append(p));
  6.         }
  7. }
  8. class Person {
  9.         @Override
  10.         public String toString() {
  11.                 return "person";
  12.         }        
  13. }
复制代码
文档上说的很清楚啊,看这个方法:
append
public StringBuffer append(Object obj)
Appends the string representation of the Object argument.
The argument is converted to a string as if by the method String.valueOf, and the characters of that string are then appended to this sequence.

参数:obj - an Object.
返回:a reference to this object.
另请参见:String.valueOf(java.lang.Object), append(java.lang.String)

他内部调用了String.valueOf(java.lang.Object)方法,而这个方法返回的就是obj.toString()。
作者: 黑马张英涛    时间: 2013-1-20 11:13
郁闷,我的代码框去不掉了
作者: 高浩    时间: 2013-1-20 12:28
本帖最后由 高浩 于 2013-1-20 12:29 编辑

StringBuffer 他是字符缓冲区,只能存储字符串,但是它功能很强大,什么样的基本数据类型都可以存,而且长度是可变的,存什么样的基本数据,都可以将其转换为字符串存入其中,但使用时要调用toString()方法,
还可以在里面的具体位置插入指定数据Insert()方法可以实现。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2