www.5129.net > jAvA中 BytE A=3;BytE B=4;BytE C=A+B;为什...

jAvA中 BytE A=3;BytE B=4;BytE C=A+B;为什...

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

你好!3 4 这些数字都是int型的 当然需要强制转换类型了 同样道理的还有 1.1 这个就是double 像这样 float a=1.1 这样写也会报错 希望对你有所帮助,望采纳.

byte的值的范围只有0和1(只是一位二进制数字),1+1=2,范围超出而出现溢出错误.

int 比 byte 可以表示的数要大, 有存在大杯子往小杯子倒水的溢出嫌疑, 用强制类型转换可以解除这个警告,byte b = (byte)a;

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

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

67+89二进制为10011100.首位为1是负数.负数是用补码表示,变成原码要首位不变,取反加一:取反:11100011;加1:11100100. 也就是-100了

整数在java中默认是int型的,不同的数据类型间计算时,会默认将其转化为其中较高的数据类型,所以a+4结果是int,把int转化为更小的byte,需要强制类型转换.而+=是运算符,java中有特定的方法编译.

byte b = b1+b2; 以为b1+b2java中是自动转换成int型在计算值的 结果是int型的数据,不能自动转成byte,所以报错, byte b =(byte)(b1+b2);就不报错了

在“”里面的都是原样输出的,就是输出a+b,第2个 + 是连接的意思,就是把a+b的值放到原样输出表达式的后面,第3个 + 就是加法的意思.例如:System.out.println(“a”+“b”) 结果:ab

相关搜索:

网站地图

All rights reserved Powered by www.5129.net

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