黑马程序员技术交流社区

标题: 关于一个小练习题 [打印本页]

作者: 我为你着迷    时间: 2014-10-17 14:55
标题: 关于一个小练习题
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?


作者: 哈达洋    时间: 2014-10-17 15:08
第三句咯。int 类型不能赋值给已经声明为byte类型的b。
作者: 我为你着迷    时间: 2014-10-17 15:29
哈达洋 发表于 2014-10-17 15:08
第三句咯。int 类型不能赋值给已经声明为byte类型的b。

b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。
b=b1+b2不可以,是因为b1和b2是变量,因为变量的值会变化,不确定具体的值,所以默认使用int类型进行存储。

作者: 哈达洋    时间: 2014-10-17 15:36
我为你着迷 发表于 2014-10-17 15:29
b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。 ...

真的是,多谢!!!
作者: chenglove1201    时间: 2014-10-17 16:53
我为你着迷 发表于 2014-10-17 15:29
b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。 ...

感谢,一个细节问题
作者: Mr.Ni    时间: 2014-10-17 20:17
细节的问题,我居然也做错了
作者: 刘家斌    时间: 2014-10-17 22:29
我为你着迷 发表于 2014-10-17 15:29
b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。 ...

受教了。。。
作者: liu951753xz    时间: 2014-10-17 23:42
第二句,因为java内部有一个叫自动类型转换的东西
作者: 我为你着迷    时间: 2014-10-18 08:07
liu951753xz 发表于 2014-10-17 23:42
第二句,因为java内部有一个叫自动类型转换的东西

亲 什么意思 啊   
作者: 月老~牵红线    时间: 2014-10-18 10:54
b=b1+b2;这一行出错,因为Java中,有自动类型转换,由JVM自动完成,比如两个byte类型运算时自动转成int,这样再赋值给byte类型的b是不行的
作者: csf62615    时间: 2014-10-18 11:31
涉及到类型转换
作者: 我为你着迷    时间: 2014-10-18 14:07
月老~牵红线 发表于 2014-10-18 10:54
b=b1+b2;这一行出错,因为Java中,有自动类型转换,由JVM自动完成,比如两个byte类型运算时自动转成int,这 ...

奥 谢谢啊  
作者: 面具猴    时间: 2014-10-18 14:31
int类型是个基准,所有低于int类型的只要进行算术运算都要提升为int型,
b=3+4,在编译时已经得出结果了,即等同于b=7;并不会在最终的运行字节码中存在3+4这条指令
作者: nerveva2000    时间: 2014-10-18 14:51
b=b1+b2;这一行,你需要做强制转换类型
这么写,b=(byte)(b1+b2);运算完后,转成byte型即可。。。
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 byte b1=3,b2=4,b;
  7.                 b=(byte)(b1+b2);
  8.                 b=3+4;
  9.                
  10.                 System.out.println(b);
  11.         }
  12. }
复制代码

作者: 我为你着迷    时间: 2014-10-18 15:38
nerveva2000 发表于 2014-10-18 14:51
b=b1+b2;这一行,你需要做强制转换类型
这么写,b=(byte)(b1+b2);运算完后,转成byte型即可。。。
...

嗯 谢谢啊   辛苦了  
作者: xiexiaodong    时间: 2014-10-24 13:52
b = (byte) (3 + 4);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2