int类型和byte类型的强制类型转换
今天在读《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类型的强制类型转换相关推荐
- oracle的int范围,oracle中int类型和number类型区别
oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...
- C# string类型和byte[]类型相互转换
string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...
- MongoDB查询时排序字段为int类型和string类型的区别
最近在开发中遇到一个mongo查询排序的问题,项目中一些高频访问的热数据是放在mongoDB里的,mongo支持很多像SQL一样的操作比如sort就对应于SQL的order by. 比方我们有一个集合 ...
- int类型和Integer类型数据的比较
一.由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同). 例子1: Integer a ...
- [转载] Python中int类型和string类型的相互转换
参考链接: Python类型转换和类型转换 1.字符串转换成int a = '10' int(a) //十进制string转化为int, 10int(a, 16) //十六进制string转化为int ...
- int类型和number类型区别
一句话:INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设 ...
- 类的自动转换和强制类型转换
类型转换 将一个标准类型变量的值赋值给另一种标准类型的变量时,如果这两种类型兼容,则C++自动将这个值转换为接收变量的类型. long count = 8; //int类型转换为long类型 doub ...
- Java学习(4)—— 布尔类型、基本数据类型转换、基本数据类型和String类型的转换
布尔类型 也叫Boolean类型,boolean只允许取true和false. boolean占一个字节. 适用于逻辑运算,流程控制语句. 有默认类型,是false.但是应该声明为成员变量或是静态变量 ...
- Python中float类型、float32类型和float64类型的表示精度,所需内存及其之间的转换
1. 表示精度和所需内存 float类型和float64类型是一样的,都需要64个bits,而float32需要32个bits. 精度方面,float类型和float64类型在十进制中可以有16位,而 ...
最新文章
- android 中使用TabHost控件实现微信界面的底部菜单效果
- 黑客暗网叫卖Zoom账号密码,1分钱能买71个,加密大佬教袁征做人,17年前开源软件现在又火了...
- oracle数据库迁移方案二
- 并行计算及GPU简介
- 坐标或测量值超出范围
- “飞天、无影、小蛮驴…”带你走进2020云栖大会
- 关于Time.deltatTime的理解
- 引用类型和值类型区别(一)
- java用if怎么编程税收_Java - 使用If和if else语句的简单税计算器
- Java 爱的循环_郁金花海 Tulip Sea in Love Loop
- oracle 存储过程body,【随手记】Oracle存储过程报错 Compilation errors for PACKAGE BODY
- 基于PyQt5与opencv制作的证件照尺寸变换应用程序
- linux中 halt shutdown
- AID自定义桌面图标
- DAOS 系统内部介绍(一)—— 概述
- windows ubuntu 双系统 蓝屏Technical information: ***stop:0x0000007B(0x80786B58,0xC0000034,0x00000000,0x00
- C++(11):多线程同步packaged_task
- iterm配置alias
- 奇迹网站系统IGC奇迹mu S18网站可视化装备模板
- 学渣的刷题之旅 leetcode刷题 2. 两数相加
热门文章
- 带你自学Python系列(十三):Python函数的用法(三)
- 机器学习面试之偏差方差
- 深度学习(六十七)metal forge深度学习库使用
- Arcgis用字段计算器计算只出一部分值另外一部分为null
- 国土空间规划的体系和内容
- 百度地图显示服务器地址,百度地图_根据地图上标记位置获取街道信息,以及经纬度信息...
- 最详细的FCN论文笔记
- 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法
- 通过jquer连接数据库里面的数据、LINQ简介
- 坑:pytest 运行报错unknown hook 'pytest_namespace' in plugin module 'allure.pytest_plugin'