ByteArrayInputStream 遇到的问题:类型转换

qingtian_zhen 2007-08-16 02:19:17
import java.io.*;
public class ByteArrayTester
{
public static void main(String args[])throws IOException
{
byte[] buff=new byte[]{2,15,67,-1,-9,9};
ByteArrayInputStream in=new ByteArrayInputStream(buff,1,4);
int data=in.read();
while(data!=-1)
{
System.out.println(data+" ");
data=in.read();
}
in.close();
}
}
结果输出:15 67 255 247
对于 byte类型的15 二进制的形式为 00001111 转为int 类型是为 00000000 00000000 0000000 00001111 因此结果依然是15,但是当是-1时转化完的结果是255
同理其他的都一样。

可是在进行基本类型转化的时候却不是这样;
byte b1=15,b2=-1,b3=-9;
int a1=b1,a2=b2,a3=b3;
此时a1,a2,a3的值是15,-1,-9
这是为什么呀 不明白大家遇没遇到这个问题
希望高手给讲解一下
...全文
1295 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zephyr_cc 2007-08-16
  • 打赏
  • 举报
回复
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
zdjray 2007-08-16
  • 打赏
  • 举报
回复
public int read()
从此输入流中读取下一个数据字节。
返回一个 0 到 255 范围内的 int 字节值。
如果因为到达流末尾而没有可用的字节,则返回值 -1。

返回的是0-255,所以是负数的话就会溢出,返回一个正数
原数加上(减去)256的倍数,使得结果在0-255中

byte到int转型是扩充范围,不会引起数值的变化
qingtian_zhen 2007-08-16
  • 打赏
  • 举报
回复
我先给自己顶一下

62,616

社区成员

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

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