A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void main(String [] args){
  byte b = 15;
  b++;
  b = b + 1;
  System.out.println(b);
}

7 个回复

倒序浏览
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 byte b = 15;
  7.                 b++;
  8.                 b = (byte)(b + 1);
  9.                 System.out.println(b);
  10.         }
  11. }
复制代码


byte类在运算时会变为int类,a为byte类
回复 使用道具 举报
b = b + 1;报错,运算的时候,byte 类型的 b 提升为 int 类型,然后和 int 类型的1相加,结果还是 int 类型,不能赋值给 byte 类型。应该强制转换 b = (byte) (b + 1);b++;不会报错是因为++运算符是隐含这强制类型转换的,也就是说,b++ 就相当于 b = (byte) (b + 1);
回复 使用道具 举报
要强转一下  不然会损失精度,byte类型提升为int,b+1前面(byte)b+1就不会啦,这个叫做强制转换
回复 使用道具 举报
b = b + 1写错了,运算会自动提升成int型,把int型的结果赋给byte型变量会提示损失精度.....
回复 使用道具 举报
1默认是int型的,你把他和byte型的相加赋值给byte型,肯定损失精度啊
回复 使用道具 举报
fagug 中级黑马 2016-1-19 09:52:58
7#
你定义的变量b是byte型,b = b + 1;这行代码加的1默认是int行,则运算后的结果变量b被自动上升为int型,此时与之前的初始化类型冲突,byte型内存空间里放不下int型数据,程序错误,改为 b=(byte)(b+1);
回复 使用道具 举报
byte类型的b++会提升为int类型,需要强转b=(byte)b+1,不然会损失精度
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马