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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙沛 中级黑马   /  2012-9-14 11:00  /  1223 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

buf是个字节数组,请教下System.out.println(new String(buf));和System.out.println(buf.toString());为什么这两个打印的不同啊,有什么区别!

2 个回复

倒序浏览
System.out.println()中打印的内容都会默认调用toString()方法的。
new String(buf)是用字符串的构造函数将字节数组转换成字符串,再调用toString()方法,因为字符串的toString方法已经复写了Object类的方法,所以这里会打印字符串本身。
而buf.toString()和直接打印buf效果一样,因为数组这个类没有复写toString(),是调用了Object的toString()方法,打印的会是getClass().getName() + '@' + Integer.toHexString(hashCode())这样一个字符串。

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
new String(buf)是重新创建了一个值为buf的String类型的对象,然后进行打印输出。
buf.toString()是将buf对象调用了toString()方法,打印出该buf的地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马