黑马程序员技术交流社区

标题: 重新看了下String类的部分,发现个问题 [打印本页]

作者: 王瀛    时间: 2013-6-5 16:34
标题: 重新看了下String类的部分,发现个问题
本帖最后由 王瀛 于 2013-6-5 16:46 编辑
  1. class StringBufferDemo
  2. {
  3.         public static void sop(Object obj)
  4.         {
  5.                 System.out.println(obj);
  6.         }
  7.         public static void delete()
  8.         {
  9.                 StringBuffer sb = new StringBuffer("abcdefg");
  10.                 sop(sb);//=======================>一
  11.                 sop(sb.toString());//=================>二
  12.         }
  13.         public static void main(String[] args)
  14.         {
  15.                 delete();
  16.         }
  17. }
复制代码
一、二部分都能打印出来StringBuffer中的字符串,有什么区别? 还是说 一中默认调用了toString()方法?
作者: eycrckag    时间: 2013-6-5 16:40
没有区别,因为sb默认的调用了toString方法
作者: 夜默    时间: 2013-6-5 16:43
System.out.println(sb);时,它其实是自动调用sb.toString()方法,然后输出该方法返回的string字符串.跟StringBuffer和String没关系,是System.out.println自动调用
作者: 王瀛    时间: 2013-6-5 16:46
4968547610317 发表于 2013-6-5 16:43
System.out.println(sb);时,它其实是自动调用sb.toString()方法,然后输出该方法返回的string字符串.跟Str ...

了解了,感谢~
作者: 王瀛    时间: 2013-6-5 16:46
eycrckag 发表于 2013-6-5 16:40
没有区别,因为sb默认的调用了toString方法

知道了,谢谢~
作者: 神之梦    时间: 2013-6-5 16:54
就打印上是没啥区别,但是调用应该就不一样了吧
sb表示的是一个容器
sb.toString()表示的是一个字符串,这里可以用一个字符串变量来接收。
看得出楼主应该是在复习了。加油!




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