数据类型(初阶)
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
初阶只介绍基本数据类型
基本数据类型
整数型(int)
Java的整数类型就是用于存放整数值的,比如12,50,12908等
整数类型的占用空间及表示范围:
类型 | 占用空间 | 范围 |
---|---|---|
byte[字节] | 1字节 | -128 ~ 127(具体原因在二进制中详解) |
short[短整型] | 2字节 | -215 ~ 215-1 即 -32768 ~ 32767 |
int[整型] | 4字节 | -231~231-1 即 -2147483648 ~ 2147483647 |
long[长整型] | 8字节 | -263 ~ 263-1 |
整型使用细节
- Java各整数类型有固定的范围和字节长度,不受具体操作系统影响,以保证java程序的可移植性。
- Java的整型常量默认为int型,声明long型常量须加’l’ 或’L’
- java程序中变量常声明为int型,除非不足以表示大数,才使用long
浮点类型
Java的浮点类型可以表示一个小数,比如123.4,7.8,0.12等
浮点型的分类
类型 | 占用存储空间 | 范围 |
---|---|---|
单精度浮点型(float) | 4字节 | -3.403E38 ~ 3.403E38 |
双精度浮点型(double) | 8字节 | -1.798E308 ~ 1.298E308 |
浮点数在计算机中存放形式是:浮点数=符号位+指数位+尾数位
尾数部分可能丢失,造成精度损失(因此小数都是近似值)。
浮点数的细节
-
与整数类型类似,Java浮点数也有固定的范围和字段长度,不受具体操作系统的影响。
-
Java的浮点型常量默认为double型,声明float型常量,须后加’f’ 或 ‘F’
-
浮点型长量有两种表示形式
十进制数形式:如:5.12 5.12f .512 (必须有小数点)
科学计数法形式:如:5.12e2 5.12E-2 -
通常情况下,应该使用double型,因为它比float型更精确
-
浮点型的使用陷阱
double a = 2.7; double b = 8.1 / 3; System.out.println(a); System.out.println(b); if ( a == b){ System.out.println("相等"); }
结果是
b的正常结果应该是2.7,然而事实并非如此而是一个很接近2.7的数字
这是因为计算机在存储小数时是以精度来保留的,这是计算机的问题
所以我们对运算结果是小数的数进行相等判断时,要小心当我们必须这样做时应这样:
//应用两个数的差的绝对值,在某一个精度范围内判断 if (abs(a - b) < 0.00001) { System.out.println("相等"); }
## 字符类型
### 基本介绍
字符类型可以表示==单个字符==,字符类型是char,char是两个字节(可以存放汉字)
### 演示
```java
char c1 = 'a';
char c2 = '\t';
char c3 = '张';
char c4 = 97; //说明:字符类型可以直接存放一个数字
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
程序在输出c4时,会输出97所表示的字符
各个数字所表示的字符是什么就要涉及到编码的概念(Unicode码表)
字符类型细节
- 字符常量是用单引号括起来的单个字符
- Java中还允许使用转义字符 ‘’ 来将其后的字符转变为特殊字符常量(其意义可在Unicode码表中查看)
- 在Java中,char的本质是一个整数,在输出时,是Unicode码对应的字符
- char类型是可以进行运算的,相当于一个整数,因为都有对应的Unicode码
布尔类型
基本介绍
布尔类型也叫Boolean类型,它只能存储true和false
布尔类型只占1个字节
它只适于逻辑运算