关于OutputStream类一个方法的疑问?

write
public abstract void write(int b)
throws IOException将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。
OutputStream 的子类必须提供此方法的实现。


参数:
b - 字节
抛出:
IOException - 如果发生 I/O 错误。尤其是,如果已关闭输出流,则可能抛出 IOException。


这里为什么不用byte,而要用int哪?不是浪费了吗?既然写的是一个字节,用byte不就够了,怎么要多3个字节哪?
...全文
267 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
维天有命 2013-08-19
  • 打赏
  • 举报
回复
看情况这应该是一个抽象类,这个抽象方法需要你自己实现。在java中有DataInputStream,和DataOutputStream 可以读取int byte 等类型,对于像你这种需求的,使用该方法更好使。
2013-08-19
  • 打赏
  • 举报
回复
引用 8 楼 mkaser 的回复:
Java的底层 byte short char 都是由int 实现的。其实在底层根本只有int
...... 那int是由什么实现的呢。 这个实现是什么意思呢。就是说.byte,是通过截取int的一部分所得到的? short ,char也是如此???
mkaser 2013-08-19
  • 打赏
  • 举报
回复
Java的底层 byte short char 都是由int 实现的。其实在底层根本只有int
valenon 2013-08-19
  • 打赏
  • 举报
回复
或许,这个方法只是一个中间的过程,可能是用于一个字节一个字节地写入一个多字节数据。因为输入流InputStream有一个与之对应的方法read(): “从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。。。”
2013-08-19
  • 打赏
  • 举报
回复
引用 5 楼 is_zhoufeng 的回复:
[quote=引用 4 楼 fortheother 的回复:] [quote=引用 3 楼 zhiqiu 的回复:] 哦,明白了,谢谢了!
你明白什么了呢。我根本看不明白2L。 他的意思是使用byte无法写入255这样的值么? [/quote] 255无法用byte表示,虽然byte是八位,但是最高位是符号位,所以实际上byte的值由前面7位组成,7位能组成的值的范围为-128~127 ,所以无法表示255 [/quote] 为什么需要255这个数据呢。 对于字节流来说,-128到127不可以么? 对于流来说,跟255,-128也没什么关系吧,他需要的只是010101010的串。如果硬要把-128当成255来处理,也不是一件很难处理的事情吧。 需要用四倍的空间,尽为了一个数字意义上的255?
_jerrytiger 2013-08-19
  • 打赏
  • 举报
回复
引用 4 楼 fortheother 的回复:
[quote=引用 3 楼 zhiqiu 的回复:] 哦,明白了,谢谢了!
你明白什么了呢。我根本看不明白2L。 他的意思是使用byte无法写入255这样的值么? [/quote] 255无法用byte表示,虽然byte是八位,但是最高位是符号位,所以实际上byte的值由前面7位组成,7位能组成的值的范围为-128~127 ,所以无法表示255
2013-08-19
  • 打赏
  • 举报
回复
引用 3 楼 zhiqiu 的回复:
哦,明白了,谢谢了!
你明白什么了呢。我根本看不明白2L。 他的意思是使用byte无法写入255这样的值么?
  • 打赏
  • 举报
回复
哦,明白了,谢谢了!
nemesis_ 2013-08-19
  • 打赏
  • 举报
回复
如果用byte类型,由于java里都是有符号数据类型,所以某些值是表达不了的,比如想写入255,要是用java里的byte类型,最高位是符号位,所以表达范围是-128~127,表示不了255. 也正是这个原因,所以注释里有这么一句话:“向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。”
  • 打赏
  • 举报
回复
哪位指点一下,多谢!

62,635

社区成员

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

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