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

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
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS篇(015)-列举 3 种强制类型转换和 2 种隐式类型转换

    答案: 强制: parseInt(), parseFloat(), Number(), Boolean(), String() 隐式: +, - 解析: // 1.parseInt() 把值转换成整数...10 parseInt("22.5"); // 22 parseInt("blue"); // NaN // parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数...例如: parseInt("010"); // 8 parseInt("010", 8); // 8 parseInt("010", 10); // 10 // 2.parseFloat() 把值转换成浮点数...(可以是整数或浮点数),Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。...") // 56 Number("5.6.7") // NaN Number(new Object()) // NaN Number(100) // 100 // 4.Boolean() 把给定的值转换成

    1.6K20

    多用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

    C语言类型转换(自动类型转换+强制类型转换)

    再如:int n = f;f 是 float 类型的数据,需要先转换为 int 类型才能赋值给变量 n。...强制类型转换自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求。如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。...自动类型转换是编译器默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。...换句话说,自动类型转换不需要程序员干预,强制类型转换必须有程序员干预。强制类型转换的格式为:(type_name) expressiontype_name为新类型名称,expression为表达式。...类型)转换为 float 类型下面是一个需要强制类型转换的经典例子:#include int main(){ int sum = 103; //总数 int count

    35910

    Vue js 截取字符串及数据类型强制转换

    整理一下 Vue JS 截取字符串和数据类型转换的一些方法: 截取字符串: 这里总结了3种方法,可以根据需要使用。...0 str = str.substring(1,-3);//a #负数转换为0 console.log(str) 数据类型转换: 典型的 String 转 Number 问题。...() ,比如去分数保留2位小数 parseFloat(string).toFixed(2) ; 强制类型转换: /*把给定的值转换成Boolean型*/ Boolean(value) /*把给定的值转换成数字...(可以是整数或浮点数)*/ Number(value) /*把给定的值转换成字符串*/ String(value) 利用JS变量弱类型转换: 举个小例子,一看,就会明白了。 ...代码如下: var str= '012.345 '; var x = str-0; x = x*1; 上例利用了 JS 的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的

    4.6K21
    领券