字节数组逐个输出正常,整体输出乱码?

收费的阳光 2011-02-24 08:58:31
   	byte[] b = new byte[1024];
// 设置要读取的字节位置
int len1 = in.read(b);
// System.out.println(file.readByte()+">>FilePointer>>"+file.getFilePointer());
// int pointer = 0;
while(len1!= -1){
for (int i = 0;i < len1;i++)
System.out.print(b[i]+",");

从一个二进制文件读入1k的内容,然后输出。这个可以正常输出一些二进制数,
-32,-75,0,0,0,91,20,0,0,40,0,0,0,2,127,-16,56,-128,1,-45,4,99,6.....
但是如果我使用
   	byte[] b = new byte[1024];
// 设置要读取的字节位置
int len1 = in.read(b);
// System.out.println(file.readByte()+">>FilePointer>>"+file.getFilePointer());
// int pointer = 0;
while(len1!= -1){
System.out.print(b+",");

整体输出,结果就是一串东东:
[B@de6ced,
[B@de6ced,
[B@de6ced,
[B@de6ced,
.....一直到结束~为什么这样呢?真搞不懂~~?
...全文
435 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanRivergo 2011-02-25
  • 打赏
  • 举报
回复
B@de6ced是类保存的内存地址。
收费的阳光 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 crystalangle 的回复:]

楼主要搞清楚,数组是引用类型,数组名b本身保存的是数组的地址,你这样输出就是把数组的地址输出来了
这和你直接输出一个对象(如果没有重写toString方法)是一样的
[/Quote]
我是需要好好學習java了,嘿嘿~!!謝謝您!
收费的阳光 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shilyj7 的回复:]

楼主把java的数组当c里的数组么,还当指针用啊……
- -!
[/Quote]
不一樣的啊~?哈哈!!!我是昨天剛剛開始用java的,我真當他們是一樣的呢~謝謝你的提醒了。呵呵~!
永生天地 2011-02-24
  • 打赏
  • 举报
回复
b是数组首个元素的地址
knightzhuwei 2011-02-24
  • 打赏
  • 举报
回复

就算是当指针也不应该用while(len1!= -1)啊
shilyj7 2011-02-24
  • 打赏
  • 举报
回复
楼主把java的数组当c里的数组么,还当指针用啊……
- -!
licip 2011-02-24
  • 打赏
  • 举报
回复
+1[Quote=引用 1 楼 crystalangle 的回复:]
楼主要搞清楚,数组是引用类型,数组名b本身保存的是数组的地址,你这样输出就是把数组的地址输出来了
这和你直接输出一个对象(如果没有重写toString方法)是一样的
[/Quote]
而且,它也不是乱码。是地址值的十六进制表示。
knightzhuwei 2011-02-24
  • 打赏
  • 举报
回复
什么叫整体输出?
Nodin 2011-02-24
  • 打赏
  • 举报
回复
楼主要搞清楚,数组是引用类型,数组名b本身保存的是数组的地址,你这样输出就是把数组的地址输出来了
这和你直接输出一个对象(如果没有重写toString方法)是一样的

62,614

社区成员

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

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