为什么Java的InputStream.read函数要返回int型而实际上它只读一个byte
2010-09-01 14:33
453 查看
今天为了一个低级错误查了一个小时,这个低级错误就是把DataInputStream的read和readInt当作一个函数用。两个都叫read的函数返回值也都是int,Bill Joy(Java之父)应该为我的错误负部分责任!
DataInputStream的read()正如我们所知道是继承自InputStream的read(),作用是读取下一个byte。那为什么读byte却要返回int呢?我想这种“大材小用”的设计的最主要的考虑是-1,即正常的byte值返回为一个0-255之间的int,而当字节流结尾以-1表示。如果返回类型是byte就没法表示-1。
那如果readInt()读到结尾了怎么办?答案是抛出一个EOFException异常。
希望读了本日志的童鞋们不要再犯跟我一样的错误...
DataInputStream的read()正如我们所知道是继承自InputStream的read(),作用是读取下一个byte。那为什么读byte却要返回int呢?我想这种“大材小用”的设计的最主要的考虑是-1,即正常的byte值返回为一个0-255之间的int,而当字节流结尾以-1表示。如果返回类型是byte就没法表示-1。
那如果readInt()读到结尾了怎么办?答案是抛出一个EOFException异常。
希望读了本日志的童鞋们不要再犯跟我一样的错误...
相关文章推荐
- java 为什么InputStream.read()读取一个byte却返回一个int呢?
- 为什么InputStream.read()读取一个byte确返回一个int呢?
- java.io.FileInputStream.read()的返回值类型为什么是int而不是byte
- 为什么InputStream.read()读取一个byte确返回一个int呢?
- 为什么InputStream.read()读取一个byte确返回一个int呢?
- read()方法读取的是一个字节,为什么返回是int,而不是byte
- Java学习之InputStream中read()与read(byte[] b)
- 为什么IO读取流的read方法返回的是int而不是byte的原因!
- 编写一个函数,传入一个int型数组,返回该数组能否分成两组
- Java学习之InputStream中read()与read(byte[] b)
- Java学习之InputStream中read()与read(byte[] b)
- 关于java字节流的read()方法返回int型而非byte型的思考
- Java学习之InputStream中read()与read(byte[] b)
- Java中字节流和字符流的read()方法为什么返回的值是int类型
- 基于java的InputStream.read(byte[] b,int off,int len)算法学习!
- Java基础之InputStream中read()与read(byte[] b)
- java中InputStream中read()与read(byte[] b) 用法介绍
- Java学习之InputStream中read()与read(byte[] b)
- C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到
- java.io.InputStream.read(byte[] b, int off, int len)