基本的不能再基本的问题 byte a = 2a = a +3 //为什么这个是报错的a+=3 //而这个是对的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 a=a+3这里的3是int,所以错了a+=3这里是byte,是对的。 a=a+3 报错 是因为加法运算的时候会把a和3的类型转换为同一高优先级运算的数据类型。a+3的结果就是一个int类型的数据,而a是个byte类型。所以会报错。a+=3是正确的,因为虚拟机运算的规定。a+=3和a的类型一致。 1. a = a +3 // 整数3默认是int型,这条语句显然会丢失精度。除非你进行转化,a = a +(byte)32. a+=3 //之所以不会报错,是因为这是复合赋值,很多人多误认为a+=3;就是a = a+3; 其实不然,这条语句在执行时有略微的不同,就是:在执行 a+3后,还会将所得结果转换,把它转换成a的类型,如果所得结果的精度比a的要高,就向这条语句,那么就会被窄化,如果超出a类型的表示范围,那么得到的就不是你想要的值了。 入门者学习门槛:关于源代码 请问java中A类如何调用B类的jtextfield的gettext()方法?老是出错!!!!郁闷至极 求编写程序切两个数的最大公约数和最小公倍数 java中如何取得请求时用户输入的地址 Jtree的叶子节点de自定义图标时有时无? 请问哪里有JB10下载? readLine问题?? 用 URLConnection 来从服务器请求文档的样本代码,在JBuilder7下抛异常,WHY? String如何转换到int cmd编译显示找不到符号,求指导 动态建立JTable 菜鸟请教GUI问题!
这里的3是int,所以错了
a+=3
这里是byte,是对的。
除非你进行转化,a = a +(byte)3
2. a+=3 //之所以不会报错,是因为这是复合赋值,很多人多误认为a+=3;就是a = a+3;
其实不然,这条语句在执行时有略微的不同,就是:在执行 a+3后,还会将所得结果转换,把它转换成a的类型,
如果所得结果的精度比a的要高,就向这条语句,那么就会被窄化,如果超出a类型的表示范围,那么得到的就不是你想要的值了。