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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte b=4;
byte b1=3;
byte b2=7;
b=b1+b2;      //这样是计算不出b,是错误的
b=b1+7;        //这样也是计算不出b
byte b=3+7;  //怎么这样又可以计算?

我刚开始学  看到了这样的答案  希望有跟我一样不理解的也能看到:

//b = 3+7;
  /*
  b取值范围:-128~127
  编译器在编译时(byte类型取值是有限的)他在判断右边的数值的时候发现是int类型(是“常量”), 但他会判断是不是在byte字节范围之内,如果在的话,会给右边的int类型做默认的强转,他把最后的一个字节(byte八个二进制)赋值到了b这个变量当中
  */

/*
  b1和b2是“变量”意味着这两值不确定、可能随时变化,编译器无法检查,也无法确定是否在byte字节范围之内, 他检查不了就会报错(可能丢失精度),如果是“常量”编译器就能够判断了


2 个回复

倒序浏览
wf111sxwf 来自手机 中级黑马 2014-11-17 20:08:26
沙发
byte的取值范围太小了
回复 使用道具 举报
make一下,同求,没注意过啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马