byte b=127;b+=1;System.out.println(b);输出结果:-128 结果是128,为什么变成了-128;byte的取值范围是(-128~127)

解决方案 »

  1.   

    过程是先将b,就是127转换成Int型的,然后加1,最后截掉高八位,剩下10000000,Byte是有符号的,所以这个值所有为取反在加1就是它的绝对值,所以这个数就是-128
      

  2.   

    java用的是补码,要得到正确结果可以System.out.println(0xff & b); 
      

  3.   

    问题是有时候只能获得一些byte序列,比如从文件中读出来的时候,所以用类型提升的方法行不通的