java里int类型转byte类型

今天在做书上的一个例子的时候, 要使用byte类型,首先我很直接的就写到了byte b = 0XAA, 结果报错, 说从int转换到byte可能会有损失. 我当时就很奇怪, 为什么会出现这种情况呢? 0XAA转化为10进制的byte类型就是-86, 并没有超出-128~127的范围.而且如果直接赋值byte b = -86 ; 也是正常通过.

经过网上一位前辈的教导, 现在有了这样的结论:

  1. 在计算机中是没有正负数的区分的, 所有的正负数都是人为规定的
  2. byte类型的最小值-128二进制位1000 0000 , 其实就是-0, 是人为规定的.
  3. java程序中遇到16进制数, 会优先处理成数值, 也就是10进制中的数值部分, 而不是包括符号位的数据

   所以在进行byte b = 0XAA; 这样的赋值的过程中, 0XAA被处理成0 1000 0000 也就是int类型的170 , 然后0 1000 0000转化成byte类型. 由于byte类型放不下符号位在内的全部数据, 所以报错会有精度损失.

//这些都是我通过前辈的指导中理解的, 如果有什么不对的地方, 欢迎指正.^_^

原文地址:https://www.cnblogs.com/iamzhoug37/p/4275754.html