有个关于String.valueOf的问题

周靖峰 2010-12-09 11:16:33

public class Test {

public static void main(String[] args) {
byte[] array = {Byte.valueOf("67"), Byte.valueOf("68"), Byte.valueOf("69")};
System.out.println(String.valueOf(array));
System.out.println(new String(array));
}
}

为什么前一个打印出来的是地址呢?没道理啊,返回的不都是String对象吗?
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
周靖峰 2010-12-10
  • 打赏
  • 举报
回复
原来String.valueOf(byte[] data);这个功能没有啊,而是把array作为了一个对象,我明白了,谢谢大家
sound9world 2010-12-09
  • 打赏
  • 举报
回复

public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}


valueOf()参数为Object的实现,调用的都是obj的toString()方法,String类型的toString()是重写过的,返回它自身,数组的就是返回地址了。
所以String.valueOf(array)是一个字符串 但是字符串本身就是一个地址内容
random0406 2010-12-09
  • 打赏
  • 举报
回复
System.out.println(String.valueOf(array[0]));
这样可以打印里面的数据
你给的是个数组引用,String .valueOf(array)这个方法的参数是Object类型的,这样用自然要打印array的地址
eswn 2010-12-09
  • 打赏
  • 举报
回复
System.out.println(String.valueOf(array));因为array是对象,所以打印出对象地址
System.out.println(new String(array));这个是跟据array建立新的字符串,它会把byte[]里的内容拼出来。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧