Java:InputStream中的read()返回int类型的疑问
答案:3 悬赏:70
解决时间 2021-01-20 23:53
- 提问者网友:临风不自傲
- 2021-01-20 10:48
Java:InputStream中的read()返回int类型的疑问
最佳答案
- 二级知识专家网友:长青诗
- 2021-01-20 12:05
人家是把取出来的byte直接放在int的低8位里面,全部都是二进制01串,你要怎么操作怎么理解那一串是什么东西就是你自己的事了。。。
不过一般java还真很少去这样子搞操作,inputstream是个抽象类,
public abstract int read() throws IOException; 这个方法是没有内容的,调用的时候实际上是调的子类的实现
不过一般java还真很少去这样子搞操作,inputstream是个抽象类,
public abstract int read() throws IOException; 这个方法是没有内容的,调用的时候实际上是调的子类的实现
全部回答
- 1楼网友:纵马山川剑自提
- 2021-01-20 12:46
C++有unsigned,java没有
- 2楼网友:天凉才是好个秋
- 2021-01-20 12:18
这跟接口设计有关,read()设计时就决定返回-1表示流结束,为啥要用read()返回-1表示流结束而不是再加1个函数譬如eof()呢,我认为是因为函数调用成本很高,尤其是native函数,为了效率同时又简单清晰,所以决定读取字节时均返回正整数,而流结束则返回-1
c++的unsigned byte与java的byte对应关系没错,jvm内部byte是用补码实现的,譬如128的2进制为10000000,它对应的数为128取反再加1再取其负数,10000000取反=0可以这样认为的。
单纯这样看问题,帮助不是很好。在实际应用中,更有意义。如,一个C++的服务器端、java的客户端,这样的环境。
c++的unsigned byte与java的byte对应关系没错,jvm内部byte是用补码实现的,譬如128的2进制为10000000,它对应的数为128取反再加1再取其负数,10000000取反=0可以这样认为的。
单纯这样看问题,帮助不是很好。在实际应用中,更有意义。如,一个C++的服务器端、java的客户端,这样的环境。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯