使用二进制来展示说明一下整形默认为int类型
整数值默认就是int类型,因此使用二进制形式定义整数时,二进制整数默认占32位,第32位为符号位。而byte类型占用8位,第八位为符号位。
如果这样一行代码:byte b1 = 0b11100001; 这句话会报错的,因为默认类型为int类型,因此jvm默认形式为32位的二进制数00000000000000000000000011100001
符号位为0,代表为整数,二进制11100001对应的十进制数为225,超出了byte类型的取值范围byte(-128~127)。
而这样写就不会报错:byte b2 = (byte)0b11100001; 强制类型转换为byte第八位符号位为1,代表为负值因此打印b2值为-31;
下面这验证了Java中整数默认为int类型。
long binVal1 = 0b10000000000000000000000000000111;
long binVal2 = 0b10000000000000000000000000000111L;
System.out.println(binVal1);//打印结果-2147483641
System.out.println(binVal2);//打印结果2147483655