weixin_44904947 2019-04-22 23:20 采纳率: 0%
浏览 538

JAVA问题:byte类型数组里的值和int型的值运算过后为什么还能存放在byte类型数组中?

public class t2 {
public static void main(String[] args) {

   int key = 100;
   byte[] b =new byte[100];

   for (int i = 0; i < b.length; i++) {
    b[i] ^= key;
    //在异或过程中b[i]转成int类型和key运算后为什么还能存放在byte数组中呢?
}

}

}

  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2019-04-23 09:55
    关注

    数组的本质是引用地址,这段代码的本质是修改了每个元素的值,new byte[] 初时字节数组中每个元素都是默认值 0。然后用 for 循环修正数组中每个元素的值为 0 和 100 的亦或值。

    java规定在做运算时,会有一个自动类型转换,byte short char 在和 int 运算时都会提升成int后,再运算,结果为int;此时再赋值给 byte 类型会有一个强转过程: b[i] ^= key; 里面有一个强制转换过程,等价于:(byte) (s[0]^key);

    其实本质上是byte 和 int 运算的结果强制转换成了 byte ,所以可以存入 byte 数组中。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!