黑马程序员技术交流社区

标题: 关于toString()的问题 [打印本页]

作者: 孙沛    时间: 2012-9-14 11:00
标题: 关于toString()的问题
buf是个字节数组,请教下System.out.println(new String(buf));和System.out.println(buf.toString());为什么这两个打印的不同啊,有什么区别!
作者: 尤圣回    时间: 2012-9-14 11:05
System.out.println(buf.toString());只是打印数组的地址
作者: 黑马连家华    时间: 2012-9-14 11:07
单从这两个的调用形式来看
new String(but)是新建了一个对象传入buf这个值,然后通过println方法输出(其实输出也是调用String对象中的toString方法)
buf.toString()是直接调用了buf所属性对象的toString方法,buf是个数组,所以这个数组的toString方法应该会返回该数组的地址就是[@###形式
作者: 夏天    时间: 2012-9-14 11:46
先说这个new String(buf); 这是调用的String的构造函数来创建一个字符串对象。
(这是API种对String的字节数组构造函数的描述:String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。)
然后输出的时候,会调用字符串本身重写Object的 toString()方法,描述是这样的: 返回此对象本身(它已经是一个字符串!)。

再说buf.toString();是调用的buf数组的toString()方法。既返回该对象的字符串表示(跟Object中方法一样)。所以会打印出数组的地址值
作者: 王自强    时间: 2012-9-14 14:55
System.out.println(buf.toString());和System.out.println(buf);没区别吧
buf是一个数组,那么buf就是一个引用变量,打印的是地址值吧




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