首页
学习
活动
专区
圈层
工具
发布

int类型和byte类型的强制类型转换

今天在读《Java网络编程》这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方。这个地方有点细节,不过就应该把这种细节把握住。...情况是这样的,讲到InputStream的抽象方法read时,说到read返回一个int型,但实际是一个byte型的数据。这点从API也能考证。如图: ?...那么问题来了,int占4个字节,byte占1个字节,我们循环读取的时候将int型数组强制类型转换成byte时,会发生什么情况呢?代码如下: ?...1个字节占8位,既然实际返回的是byte类型的数据,那么强制类型转换int型截取低8位,对数据也不会造成影响。问题就出现在,如果再从byte型转换成int型呢?代码如下: ?...这是因为在int强制转换为byte型数据时,会产生一个-128~127的有符号字节,而不是read方法返回的0~255的无符号字节。这个时候要注意代码应修改为: ? 一个小问题,重在积累。

4.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OverflowError: Python int too large to convert to C long**:整数太大,无法转换为C类型long完美解决方法 ️

    OverflowError: Python int too large to convert to C long**:整数太大,无法转换为C类型long完美解决方法 ️ 摘要 大家好,我是默语。...) # 尝试转换为C long类型 2.2 数据转换时的隐患 在处理跨语言的数据时,Python中的自动类型转换可能会导致意想不到的错误。...) else: print("整数超出范围,无法转换为C long类型") 3.2 使用Python内置的int类型进行高精度计算 如果必须处理大整数且无需与C库交互,尽量使用Python的内置...int类型进行计算,避免转换为C类型。...尽量使用Python的原生类型进行计算:Python的int类型足以处理大多数计算场景,不需要转换为C类型时尽量避免转换。

    2.2K10

    史上最全的short、int、long、float、double取值范围

    史上最全的short、int、long、float、double取值范围 一、分析基本数据类型的特点,最大值和最小值。...二进制位数:64 包装类:java.lang.Long 最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方) 最大值:Long.MAX_VALUE=...1、首先是整型 int和long只能写10个数字,short只能写5个数字,多了就会报错。...int h=1234567890; long w=1234567890; short s=12345; 如果此时我在它们每个上面再加上一个数字,就会: 2、其次浮点 float的小数点后6位,double...i= new Integer(1);//integer 是一个类 int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充);Integer 是一个类,是int的扩展,定义了很多的转换方法

    9K10

    多用as少用强制类型转换

    我们进行转换时会有两种方法可以使用:一种是强制类型转换,这种方法可以绕过编译器的类型检查,另一种是先通过 is 判断操作是否合理,是否可以转换,然后再使用 as 运算符进行转换,或者使用强制类型转换。...下面我们就来讲解一下为什么多使用 as 少使用强制类型转换。 零、as and is 使用 as 进行类型转换会比强制类型转换更加安全,而且运行时效率更高。...但是要注意的是强制类型转换可以会造成信息丢失,例如从 long 强制转换为 short 。 在某些情况下利用强制类型转换从代码上来看似乎可以转换成功,但实际上却转换不成功。这时为什么呢?...同样,先来看一小段代码: object obj =Factory.GetValue(); int num = obj as int; 上面的这段代码运行起来后将会报错,为什么呢?...这是因为当 obj 不是 int 类型时返回的值是 null ,但是 int 类型无法接受 null 值。因此当指定类型不可接受 null 值时 as 无法进行类型转换。

    2.2K10

    Java数组 强制类型转换

    数组的强制类型转换 数组的强制类型转换 数组类型转换的问题为什么会出现在我脑海中? 数组的强制类型转换 最重要的是!!!最开始的时候声明的数组类型!!! 最重要的是!!!...java.lang.String class java.lang.String class java.lang.Integer   根据实验,一开始就声明为String数组,可以在需要时自动转为Object数组,之后可以通过强制类型转换再转回...但是,如果一开始就声明为Object数组,那么,即便这个数组中存放的全部是String对象,也是不能转换为String数组的!!! 数组类型转换的问题为什么会出现在我脑海中?...public static T[] copyOf(T[] original, int newLength) { return (T[]) copyOf(original, newLength...public static T[] copyOf(U[] original, int newLength, Class<?

    2.8K40
    领券