Java:InputStream中的read()返回int类型的疑问

(byte)in.read();read()的底层是由C++实现的,返回的是unsignedbyte,取值范围为[0~255],在java中没有对应的类型,所以只能用in... (byte) in.read();
read()的底层是由C++实现的,返回的是unsigned byte,取值范围为[0~255],在java中没有对应的类型,所以只能用int类型接收,那前面的byte的意思是转换成java中的byte类型,也就是c++返回的[0~255]与Java中byte类型的[-128~127]的对应
(byte)128=-128
(byte)129-127
(byte)255=-1
是这个意思吗?
展开
 我来答
小狂中E
推荐于2016-06-14 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1030万
展开全部
这跟接口设计有关,read()设计时就决定返回-1表示流结束,为啥要用read()返回-1表示流结束而不是再加1个函数譬如eof()呢,我认为是因为函数调用成本很高,尤其是native函数,为了效率同时又简单清晰,所以决定读取字节时均返回正整数,而流结束则返回-1
c++的unsigned byte与java的byte对应关系没错,jvm内部byte是用补码实现的,譬如128的2进制为10000000,它对应的数为128取反再加1再取其负数,10000000取反=01111111=127,再加1=128,取负数就是-128,129与255都一样的道理
姚齐010
推荐于2018-03-26 · 超过31用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:53.3万
展开全部
人家是把取出来的byte直接放在int的低8位里面,全部都是二进制01串,你要怎么操作怎么理解那一串是什么东西就是你自己的事了。。。

不过一般java还真很少去这样子搞操作,inputstream是个抽象类,
public abstract int read() throws IOException; 这个方法是没有内容的,调用的时候实际上是调的子类的实现
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-12
展开全部
可以这样认为的。

单纯这样看问题,帮助不是很好。在实际应用中,更有意义。如,一个C++的服务器端、java的客户端,这样的环境。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
加菲不是猫_喵
2014-01-12
知道答主
回答量:3
采纳率:0%
帮助的人:2.7万
展开全部
C++有unsigned,java没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式