-
概念
Java是一种强语言类型,意味着必须为每个变量声明一个类型,在Java中一共有8种基本类型(primitive type),4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。
-
整型
整型用于表示没有小数部分的数值,允许负数。
类型 | 大小(字节) | 范围 |
---|---|---|
byte | 1 | -128 ~ 127(-2^7 ~ 2^7-1) |
short | 2 | -2^15 ~ 2^15-1 |
int | 4 | -2^31 ~ 2^31-1 |
long | 8 | -2^63~ 2^63-1 |
从byte--short--int--long,以byte为基准,范围为2^7 ~ 27-1,short是215次方,与byte指数等级相差8。继续往下int与short指数等级相差16,long与int指数等级相差32。
也就是说,以byte的范围2^7为基准线,往上到short,int,long,指数之差分别对应的是23,24,2^5.(方便记忆)
题外话:Java之所以可以跨平台的其中一个因素,就是因为Java中所有数值类型所占据的字节量与平台无关,与处理器也无关,字节大小是固定的。
-
浮点类型
表示有小数部分的数值
类型 大小(字节) float 4 double 8 没有写范围的原因是实际开发中,很少会关注浮点类型数据的溢出,基本不可能。
double表示数值精度是float的两倍,所以double也称为双精度数值。绝大部分程序书写都是采用double类型。
float类型数值会有后缀F,如2.22F,如果没有,默认为double类型。
题外话: 浮点禁止在四合五入的计算中出现,比如2.0-1.1,将打印出0.899999999999,而不是你想象的0.9。原因在于浮点数值采用二进制系统表示,二进制系统中无法表示分数9/10,就像十进制无法精确表示1/3一样。这种情况下,应该用BigDecimal类(后续更新关于BigDecimal的内容)。
-
字符类型
char用表示单个字符。'A'与"A"是不同的概念,前者表示编码为65的字符常量,后者是一个包含字符A的字符串。
char类型不建议在程序中使用,就算是String有些操作需要转换为字符类型操作,但也希望首先考虑抽象数据类型表示。
-
布尔类型
boolean就包含:false和true,一般用作判断逻辑条件。另外,整型值和布尔值之间不能进行相互转换。
-
结束语
另外抛出一个问题:为什么Java有了基本类型之后,还会需要有各类型的包装类?
第一次尝试些文章,逻辑文笔不好的地方请见谅。