首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

关于byte,int演算

2013-02-02 
关于byte,int运算。1.public static void main(String[]args){byte b3+4//(1)2.public static void main(

关于byte,int运算。
1.public static void main(String[]args){
byte b=3+4;//(1)
2.public static void main(String[]args){
byte b=1;
byte c =b+b;//(2)
int c1=b+b;
为什么1.(1)的“3+4”下面没有提示有红的下划线,而2.(2)的下面“b+b”会出现下划线啊?
我的理解是:因为java默认的整数数据类型是int,在2中b被默认为了int类型的,所以在byte c =b+b;中的b+b超出byte的范围,所以“b+b”的下面会有红色下划线的提示。但是在1中的3,4难道不是被默认为int类型么?也应该有红色下划线啊!
小弟求指教!谢谢各位了。



[解决办法]
不是超出范围,正如你所说整数类型默认为int,当你(2)那里的b+b时,已经有一个将byte变为int类型的过程在里面了,意思也就是说byte c=b+b等于号的右边其实已经是int类型的了,现在你将一个int类型的结果赋值给byte类型的变量当然不行了,隐式类型转换只能从低级向高级转,所以只能强制类型转换byte c=(byte)(b+b)。是一个默认类型转化问题不是什么范围。
[解决办法]
http://www.ticmy.com/?p=285

热点排行