今天在读《Java网络编程》这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方。这个地方有点细节,不过就应该把这种细节把握住。

情况是这样的,讲到InputStream的抽象方法read时,说到read返回一个int型,但实际是一个byte型的数据。这点从API也能考证。如图:

那么问题来了,int占4个字节,byte占1个字节,我们循环读取的时候将int型数组强制类型转换成byte时,会发生什么情况呢?代码如下:

1个字节占8位,既然实际返回的是byte类型的数据,那么强制类型转换int型截取低8位,对数据也不会造成影响。问题就出现在,如果再从byte型转换成int型呢?代码如下:

此时,j输出为-106。

这是因为在int强制转换为byte型数据时,会产生一个-128~127的有符号字节,而不是read方法返回的0~255的无符号字节。这个时候要注意代码应修改为:

一个小问题,重在积累。

这是一个能给程序员加buff的公众号 

转载于:https://www.cnblogs.com/yulinfeng/p/5844151.html

int类型和byte类型的强制类型转换相关推荐

  1. oracle的int范围,oracle中int类型和number类型区别

    oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...

  2. C# string类型和byte[]类型相互转换

    string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...

  3. MongoDB查询时排序字段为int类型和string类型的区别

    最近在开发中遇到一个mongo查询排序的问题,项目中一些高频访问的热数据是放在mongoDB里的,mongo支持很多像SQL一样的操作比如sort就对应于SQL的order by. 比方我们有一个集合 ...

  4. int类型和Integer类型数据的比较

    一.由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同). 例子1: Integer a ...

  5. [转载] Python中int类型和string类型的相互转换

    参考链接: Python类型转换和类型转换 1.字符串转换成int a = '10' int(a) //十进制string转化为int, 10int(a, 16) //十六进制string转化为int ...

  6. int类型和number类型区别

    一句话:INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设 ...

  7. 类的自动转换和强制类型转换

    类型转换 将一个标准类型变量的值赋值给另一种标准类型的变量时,如果这两种类型兼容,则C++自动将这个值转换为接收变量的类型. long count = 8; //int类型转换为long类型 doub ...

  8. Java学习(4)—— 布尔类型、基本数据类型转换、基本数据类型和String类型的转换

    布尔类型 也叫Boolean类型,boolean只允许取true和false. boolean占一个字节. 适用于逻辑运算,流程控制语句. 有默认类型,是false.但是应该声明为成员变量或是静态变量 ...

  9. Python中float类型、float32类型和float64类型的表示精度,所需内存及其之间的转换

    1. 表示精度和所需内存 float类型和float64类型是一样的,都需要64个bits,而float32需要32个bits. 精度方面,float类型和float64类型在十进制中可以有16位,而 ...

最新文章

  1. android 中使用TabHost控件实现微信界面的底部菜单效果
  2. 黑客暗网叫卖Zoom账号密码,1分钱能买71个,加密大佬教袁征做人,17年前开源软件现在又火了...
  3. oracle数据库迁移方案二
  4. 并行计算及GPU简介
  5. 坐标或测量值超出范围
  6. “飞天、无影、小蛮驴…”带你走进2020云栖大会
  7. 关于Time.deltatTime的理解
  8. 引用类型和值类型区别(一)
  9. java用if怎么编程税收_Java - 使用If和if else语句的简单税计算器
  10. Java 爱的循环_郁金花海 Tulip Sea in Love Loop
  11. oracle 存储过程body,【随手记】Oracle存储过程报错 Compilation errors for PACKAGE BODY
  12. 基于PyQt5与opencv制作的证件照尺寸变换应用程序
  13. linux中 halt shutdown
  14. AID自定义桌面图标
  15. DAOS 系统内部介绍(一)—— 概述
  16. windows ubuntu 双系统 蓝屏Technical information: ***stop:0x0000007B(0x80786B58,0xC0000034,0x00000000,0x00
  17. C++(11):多线程同步packaged_task
  18. iterm配置alias
  19. 奇迹网站系统IGC奇迹mu S18网站可视化装备模板
  20. 学渣的刷题之旅 leetcode刷题 2. 两数相加

热门文章

  1. 带你自学Python系列(十三):Python函数的用法(三)
  2. 机器学习面试之偏差方差
  3. 深度学习(六十七)metal forge深度学习库使用
  4. Arcgis用字段计算器计算只出一部分值另外一部分为null
  5. 国土空间规划的体系和内容
  6. 百度地图显示服务器地址,百度地图_根据地图上标记位置获取街道信息,以及经纬度信息...
  7. 最详细的FCN论文笔记
  8. 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法
  9. 通过jquer连接数据库里面的数据、LINQ简介
  10. 坑:pytest 运行报错unknown hook 'pytest_namespace' in plugin module 'allure.pytest_plugin'