www.5129.net > jAvA 中定义BytE B = 10;BytE C = 5;B = B + C;为...

jAvA 中定义BytE B = 10;BytE C = 5;B = B + C;为...

这个问题所涉及到的问题是“自动类型提升”:在java中,对char, byte和short类型的字符串进行数学算法操作,比如+,-,>>位移等操作,都会引发自动类型提升,运算结果将是int类型,要将int的值赋给byte就会出现编译错误,所以就必须进行类型强制转换...

朋友,答案应该是5 10 等于 二进制1010 15 等于 二进制1111 ^表示按位异或 相同得0,不同得1 b^c =(二进制)0101 = (十进制)5

你所问的这个问题叫“自动类型提升” 在java中,对char, byte和short类型的字符串进行数学算法操作,比如+,-,>>位移操作,都会引发 自动类型提升,结果将是int类型,a+b的结果是int, 要将int的值赋给byte就必须进行类型强制转换。 以下这句,是从t...

0写在前面,电脑按8进制得到了9 前面写0x就是16进制了

额.. byte, short, char 这些整数类型, 只要+ - * / % , 就会变为 int 类型. short s = 1;s = s + 1; //错误, 隐式转为了int类型s += 1; //正确

首先都知道:byte类型的范围是-128到127. b+200=203超过范围了,java中就得用补码进行存储。 所谓补码,就是符号位不变,其余位取反,最后+1. 符号位指的是二进制中的第一位,比如1100 0011中,第一个1就是符号位。(1表示负数,0表示整数) 203...

java中byte在内存中实际上是用int运算的。b取反后,会自动变成int类型。加法、减法,都一样,byte会自动变成int类型。所以会报错。 而~10可以,这是java字面量编译原则,会先将~10计算出来。在赋值给byte,所以不会有问题。

就好像你的b1=3为什么不报错呢?3也是个int数啊.所以b=3+4并没有问题,你把数字去相加,它会把结果转换成byte存储.但是b1=b1+b2就不行,因为这个进行运算会强制转换为int类型的结果. 解决方法是把b1=b1+b2换成b1+=b2.使用+=就会保证类型不改变.

对于加法运算,如果两边类型不一样,则其中一个自动转换成与另一个相同的类型,再运算;如果一样,则考虑来年改变是否为整型,否则不予运算,所以要强制转换

因为什么0x 开头的是16进制,编译的时候会自动转成整数,而这个整数超过了byte的长度(byte取值范围是-128 ~ 127), 而0x80转为十进制 = 128所以报损失精度了,编译不过的

网站地图

All rights reserved Powered by www.5129.net

copyright ©right 2010-2021。
www.5129.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com