A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 包志恒 黑马帝   /  2011-7-27 19:51  /  3680 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题 StringBuffer和BuffereReader 谁能给我在讲解以下这俩个得区别的

评分

参与人数 1技术分 +1 收起 理由
admin + 1 重复问题!

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-7-27 19:59:01
沙发
他们之间就是雷锋和雷锋塔的关系,也就是没关系。
StringBuffer跟StringBuilder是类似的,用于对String进行操作。
StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
例如,如果 z 引用一个当前内容为 "start" 的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含 "startle",而 z.insert(4, "le") 将更改字符串缓冲区,使之包含 "starlet"。
通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。
而BufferedReader则是用于流操作的,缓冲读取。
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

BufferedReader in
   = new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。

详细介绍摘自JavaAPI文档

评分

参与人数 1技术分 +2 收起 理由
admin + 2 辛苦了!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-27 20:47:57
藤椅
汗!!这里个除了名字有点相近之外,基本没什么关系 看下API就知道了
回复 使用道具 举报
黑马网友  发表于 2011-7-27 21:42:40
板凳
个人感觉StringBuffer主要用于对字符串的操作;而BufferReader主要用于对字符流资源的操作。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-27 21:55:03
报纸
区别大的 没什么关系。
StringBuffer 也是对一串字符进行操作,但是可变类。只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
note:不能通过付值符号对他进行付值.
sb = "welcome to here!";//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
中付值的时候可以通过它的append方法.
sb.append("hello");

BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马