为了账号安全,请及时绑定邮箱和手机立即绑定

关于的字节问题

为什么可以将in.read()读到的字节赋给int型的i呢?一个是字节,一个是整型数据,不一样吧,或者说有什么联系吗?

正在回答

2 回答

您说的是in是什么类型的呢,FileInputStream?在FileInputStream的read()方法中有返回值为int类型的重载函数.

0 回复 有任何疑惑可以回复我~
#1

慕哥2401519 提问者

in是FileInputStream的对象, 那既然返回给b(int型)的是read方法读到的字节个数,对吧? 那为什么还能在后面的HextoString中将b作为16进制来输出,这样子输出不是只输出一个整型数据吗?为什么会输出字符串的内容
2018-07-08 回复 有任何疑惑可以回复我~
#2

神乐Triste 回复 慕哥2401519 提问者

您对read()这个方法的重载版本可能不是非常了解. 给您看看read()方法的几个定义: 当read()方法没有参数时,即循环是:while((b=in.read())!=-1). 此时的read()方法的定义是: Reads a byte of data from this input stream. This method blocks if no input is yet available. 从输入流读取一个字节的数据,如果没有输入,则此方法结束.
2018-07-09 回复 有任何疑惑可以回复我~
#3

神乐Triste 回复 慕哥2401519 提问者

返回值为: the next byte of data, or -1 if the end of the file is reached. 输入流中的下一个字节.或者在读取到文件结尾(EOF)时返回-1. 那什么情况下b是读取到的字节的个数呢?这种形式:while((b=in.read(buf,0,buf.length))!=-1)
2018-07-09 回复 有任何疑惑可以回复我~
#4

神乐Triste 回复 慕哥2401519 提问者

此时read()方法的重载函数定义为: Reads up to len bytes of data from this input stream into an array of bytes. If len is not zero, the method blocks until some input is available; otherwise, no bytes are read and 0 is returned. 从该输入流读取最多len个字节到字节数组中,如果读取到的字节不是0个.则保存到缓冲区中直到刷新缓冲区.否则不读取字节返回0.
2018-07-09 回复 有任何疑惑可以回复我~
#5

神乐Triste 回复 慕哥2401519 提问者

这个read(byte[]b,int off,int len)方法的返回值为: the total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached. 返回读取到缓冲区的字节的总数,或者在到达文件结尾时返回-1. 综上所述,在read()方法无参数时返回读取到的一个字节,在参数为read(byte[]b,int off,int len)时返回读取到的字节数量,而不是您认为的b一直是得到读取的字节数量.
2018-07-09 回复 有任何疑惑可以回复我~
#6

神乐Triste 回复 慕哥2401519 提问者

字数太多不能一次回复,只能分成几段了.
2018-07-09 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消

关于的字节问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信