关于JAVA一个问题

2025-05-19 14:43:45
推荐回答(6个)
回答1:

java中int就是长度为4个字节的(也就是32位)
而且所有小于4个字节的整数运算时均以int方式进行运算,缺省数值也是int
所以b+3返回的是个int,不是byte,需要做强制类型转换。

byte b=5;
b=(byte)(b+3);

回答2:

byte 类型占一个字节 int 类型占4个字节
一个字节占8位
byte b = 5; //这时int 类型的5 会隐性的转化成byte类型 所以 b 还是byte 类型
但 执行b = b+3时,3为int 类型 byte 类型与 int 类型做 + 运算时不会自动转换,
所以 3 还是int 类型 占4个字节 即 4个8位,所以做+运算时要强制转换才行
b = (byte)(b+3);

回答3:

你把内存条想象成,无数个小格子组成的东西. 每8个格子为一组. 再每8个组为一个队.
每个格子里放的全是0或1 电脑内存都是2进制进行处理数据的. 每8个格子,(下面我叫着1组. )组合起一的就是一个字节.这8个格子第一个格子是符号位,0或1 表示正或负. 后面是数字换算成2进制后得出的数. 比如3的2进制=00000011 最高位0 表示正数. 逢2进1 所以2就是10 3就是11 4就是100了.
你定义一个byte 内存就给这个变量,分配1组空间. 跟据上面的规则你就可以算出, byte最大能存-128~127 这些数. 因为它只有1组空间,8个格子. 再大的数 就进位了,超了.
而int类型 就比较大了, 可以存放4个字节, 也就是4组 我也没去算过,网上能查到具体多大的数.
因为,在编程里,byte类型很少参于数字的运算(因为它的取值范围 太小了.).所以,数字在默认的情况下是int类型的.
这也就解释了,你上面那个, 3占4个8位(4组)的问题.
多说一句, 英文字母 也是占4个8位. (4组)
而一个汉字占8个8位(1队)
这组啊,队啊的., 是我方便自己理解和记忆取的名字,你可以参考.

回答4:

我简单说:因为3是int,b是short,而int>>short,所以b+3是int;需要做强制类型转换
把你的改成
byte b = 5
b=(byte)(b+3);
就可以了

回答5:

java中会把数字3当作 int 型, int 型的空间占4 byte 也就是4个8位. 而byte 是一个8位

回答6:

因为3默认是int类型 int类型是32位的,一个字节占8位