一、整型
1.byte(1字节),在内存里占8位,表数范围-128~127(2^7-1)
2.short, 2字节, 16位,-32768~32767
3.int, 4字节, 32位, -2147483648~2147483647
4.long, 8字节,64位,-2^63~2^63-1
一个java整数常量默认为int型
1.把一个较小的整数(在byte或者short表数范围里)赋值给byte或者short类型的变量,系统会自动把这个整数常量当成byte或者short类型来处理,但是当把int表数范围里的数赋值给long类型的变量时,系统不会把这整数常量当成long,只是这个int类型的值会自动类型转换到long类型。
//这个是错误的,因为系统不会把9999999999当成long类型
long a = 9999999999;
//正确写法,使用L后缀
long a = 9999999999L;
8进制的整数常量以0开头,16进制的以0x或者0X开头,其中10~15用a~f表示,不区分大小写
二、字符型
char 2个字节,表数范围0~65535
三、浮点型
float 4个字节,double 8个字节, 浮点型变量表数范围不是简单的2的几次幂,float范围比long大
java默认浮点类型是double,如果要当成float处理,在数字后面跟f或者F
3个特殊的浮点值:正无穷大(POSITIVE_INFINITY), 负无穷大(NEGATIVE_INFINITY),非数(NaN),非数和任何数值都不相等包括自己。
只有浮点数除以0才能得到正负无穷大,整型除以0会报错
四、布尔型 boolean
1位
五、类型转换
1.自动类型转换
低表数范围的类型可以自动向高表数范围的类型转换:
byte->short->int->long->float->double
char->int->long->float->double
byte和short 同 char能自动转换
2.强制类型转换
如果要把上面的箭头右边的类型往左边转换就要用到强制类型转换,形如(int)
,在转换的时候要注意如果原来的数字大于目标类型的范围就会导致数据丢失
计算机用补码的形式保存整数,正数的补码和源码相同,负数的补码等于反码加1;反码等于源码除了最高位(符号位)其他位都取反