www.5129.net > jAvA中 BytE A = 'A'; 再print 为什么结果是97?

jAvA中 BytE A = 'A'; 再print 为什么结果是97?

char类型强制转换为int型,a子母对应的ascii97

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

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

可以这么说byte是int的子集,byte表示范围是-128-127;在这个范围内可以用整形常量(注意一定是整形常量不是整形变量)复制给byte类型的,这样做的目的就是为了节约更多的资源。

以前好像遇到过,jdk里面有个自带的转换机制,第一个语句他会默认的把1转换成byte类型,而第二个,1是int类型而a和b是byte类型,在运算的时候a会自动转换为int类型与1相加,而结果会变成int类型,这个时候大类型就不能自动转化成小类型,必须强制转换byt...

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

byte类型使用1字节存储,表示范围-128~127,int使用4字节存储,当byte+int时会将结果类型转为int,因为int表示范围大于byte,不影响精度,所以结果为197,但是当(byte)(a+b)时,是将计算结果int转为byte,存储空间也有4字节变为1字节,即是保留8个bi...

byte a = 4; a= a+4; 这里这个4是默认int类型的,所以运算结果是int类型的,这里字节赋值给byte类型的a是不行的; a+=4;相当于 a=(byte)(a+4); 也就是说自带强转所以没问题

new其实就是创建一个新的熟悉,在内存中开辟一个空间。 new 就是创建一个对象的意思。 这里new就是创建一个byte数组, byte[1024]是数组长度为1024

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

网站地图

All rights reserved Powered by www.5129.net

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