不积跬步,无以至千里
像其他语言一样,JAVA也提供了4种常用的数据类型:整数、浮点数、字符、布尔。
整数类型
1、包含byte(字节型)、short(短整型)、int(整型)、long(长整型);
2、byte取值范围:-128 ~ 127;short取值范围:-32768 ~ 32767;
3、默认int类型,表示long类型时,后面需要加上l或者L,例如:
long l = 1234l;
4、表达式中类型的自动提升规则:整数表达式中含有byte、short、int及数字,在计算时,都会将结果提升至int类型,例如:
byte b = 10;
b = b * 2; //错误,因为10*2表达式的结果会提升为int类型,不能再赋值给byte类型,需对结果进行强制转换
//将上述代码修改如下即可:
byte b = 10;
b = (byte) (b * 2);
5、类型强制转换:如int转byte,如果超出了byte的取值范围,则需进行特殊处理。这里牵扯到原码、反码、补码的内容,先说明这个知识点。
(1)原码,就是二进制码,最高位为符号位,0表示正数,1表示负数;
(2)反码,在原码的基础上,正数是其本身,负数除符号位不变其他位取反;
(3)补码,在反码的基础上,正数是其本身,负数是反码加1。
int a = 300 , c = 500;
byte b = (byte) a; // b的值为44
byte d = (byte) c; // d的值为-12
上述例子中,300对应的二进制数为1 0010 1100,取后8位0010 1100。该值首位为0,是正数,那么其原码即是其本身,对应的十进制即为44。
如果是500,对应的二进制数为1 1111 0100,后8位为1111 0100。该值首位为1,是负数,那么先求其反码,减1为1111 0011,再求原码,1000 1100,即为-12。