下面是read方法的API

public abstract int read()throws IOException

Reads the next byte of data from the input stream. The value byte is returned as anintin the range0to255. If no byte is available because the end of the stream has been reached, the value-1is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

A subclass must provide an implementation of this method.

Returns:the next byte of data, or-1if the end of the stream is reached.Throws:IOException- if an I/O error occurs.

返回的是一个输入流中的byte数据,为什么返回值却是int呢?

因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte;

有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1

(这是因为补码的缘故,

原码:将一个整数,转换成二进制,就是其原码。

如单字节的5的原码为:0000 0101;-5的原码为1000 0101。

反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。

如单字节的5的反码为:0000 0101;-5的反码为1111 1010。

补码:正数的补码就是其原码;负数的反码+1就是补码。

如单字节的5的补码为:0000 0101;-5的原码为1111 1011。

  在计算机中,正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。

负数用补码表示,如单字节-5,在计算机中表示为1111 1011。)

我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收;

如果11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

java后端怎么返回音频流_Java语言中的IO流read()方法返回值为什么是int而不是byte?...相关推荐

  1. java中flush函数作用_Java语言中flush()函数作用及使用方法详解

    最近在学习io流,发现每次都会出现flush()函数,查了一下其作用,起作用主要如下 //------–flush()的作用--------– 笼统且错误的回答: 缓冲区中的数据保存直到缓冲区满后才写 ...

  2. Java语言异常处理的出口_Java语言中,下列哪一个子句是异常处理的出口?

    不存源的在资如果稀缺性,语言异常意义在的经济学就了存失去. 的训阅读中最.下列最重要教学经常练是. 处理辨识的高平是古玉级水市场.内容的一与第相符项是四段,下列理解. 语言异常并单定取用仿以确样点在P ...

  3. java 程序语言中的LinkedList 集合基本方法演示

    java 程序语言中的LinkedList 集合基本方法演示 import java.util.Iterator; import java.util.LinkedList;public class L ...

  4. c语言ftell的作用,C语言中ftell函数的使用方法

    在C语言中,ftell函数用来返回回当前文件指针的位置.其定义在stdio.h头文件中.具体介绍如下: 函数原型:long ftell(FILE *fp); 是否是标准函数:是 函数功能:返回当前文件 ...

  5. _nop_在c语言里什么作用,单片机c语言中nop函数的使用方法和延时计算

    原标题:单片机c语言中nop函数的使用方法和延时计算 标准的C语言中没有空语句.但在 的C语言编程中,经常需要用几个空指令产生短延时的效果. 这在汇编语言中很容易实现,写几个nop就行了. 在C51中 ...

  6. JAVA IO流read方法基础使用

    java io流read方法基础用法 一.FileInputStream 二.字节数组读取 三.循环读取 一.FileInputStream 首先使用FileInputStream创建一个读入流,读取 ...

  7. 在java语言中 ()方法是不可以继承的_Java 语言中,构造方法是不可以继承的。( )_学小易找答案...

    [简答题]需求分析完整话术 [简答题] [单选题]适用于场地面积有限,集装箱吞吐量较大的水陆联运码头的起重机系统是( )系统 [单选题]利用叉车或半挂车.汽车承载货物,连同车辆一起开上开下船,到达目的 ...

  8. java中父类创建子类的语法_Java 语言中,所创建的子类都应有一个父类。( )_学小易找答案...

    [判断题]一个类可以实现多个接口,接口可以实现"多重继承". ( ) [简答题]报价议价环节话术 [单选题]定义一个公有double型常量PI,哪一条语句最好?( ) [论述题]展 ...

  9. java里面赋值运算符解释_Java语言中,赋值运算符是双目运算符。

    [判断题]Java编译器可以将Java字节码文件解释为二进制代码. [单选题] [单选题]为了能够使MCS-51单片机在正常工作中及时服务于多个外设,以下传送方式最适用的是(). [单选题]当使用AT ...

最新文章

  1. Rails字符集问题
  2. 十进制度转换为度分秒
  3. Javascript 进阶 作用域 作用域链
  4. sdwan技术发展正蚕食mpls市场—vecloud
  5. ActiveXObject函数详解
  6. 在项目中增加自定义icon图标
  7. python新人一月工资_python【项目】:工资管理(简易版)
  8. 南京php培训班哪家,南京PHP培训中心哪家比较专业
  9. postman--安装及Interceptor插件
  10. CentOS 7 yum 安装php5.6
  11. Python自动化办公练习——合并工作簿
  12. Riot Game前高管:游戏玩家将成为Web3真正粉丝的15大原因
  13. CF1313C2 Skyscrapers (hard version) -单调栈优化dp
  14. JVM(2)垃圾收集器
  15. c++中“ error C2953: “XXXXx”: 类模板已经定义”的另类方式错误
  16. 实现移动端H5页面调用摄像头
  17. python图片拼合
  18. 详细分析DRM架构下获取HDMI/DP/VGA/DVI显示屏参数的实现原理
  19. 仿“香哈菜谱”微信小程序(第4章)
  20. 树莓派 4b 可执行文件 无法双击运行_云拆机,一起来看看树莓派的新品——Raspberry Pi 400...

热门文章

  1. windows做ntp server,linux做ntp client端的配置方法
  2. Zookeper znode 4种类型 是什么?
  3. 详细描述一下 Elasticsearch 索引文档的过程。
  4. 使用 Laravel sharedLock 与 lockForUpdate 进行数据表行锁
  5. python--爬虫01
  6. 【MyBatis框架】查询缓存-一级缓存原理
  7. python设计模式21-策略模式
  8. 假期把技术书籍和焦虑放一边,我做了几天...
  9. Springboot整合RocketMQ实战
  10. 关于Stop The World的几个问题