3.2 基本数据类型
是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的逻辑、字符和数字。
在Java中,每个存放数据的变量都是有类型的,如:
char ch;
float x;
int a,b,c;
不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。
所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数据在内存的存储方式。
基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面
整数型
整数类型:byte、short、int、long都是表示整数的,只不过他们的取值范围不一样。
数据类型 | 位数 | 占存储空间 | 默认值 | 取值范围 | 举例说明 |
---|---|---|---|---|---|
byte(字节) | 8bit | 1字节 | 0 | -27 ~ 27-1 | byte b = 10; |
short(短整型) | 16bit | 2字节 | 0 | -215 ~ 215-1 | short s = 10; |
int(整型) | 32bit | 4字节 | 0 | -231 ~ 231-1 | int i = 10; |
long(长整型) | 64bit | 8字节 | 0 | -263 ~ 263-1 | long l = 10l; |
浮点型
数据类型 | 位数 | 占存储空间 | 默认值 | 取值范围 | 举例说明 |
---|---|---|---|---|---|
float(单精度) | 32 | 4个字节 | 0.0 | -231 ~ 231-1 | float f = 10.0f; |
double(双精度) | 64 | 8个字节 | 0.0 | -263 ~ 263-1 | double d = 10.0d; |
float 保留8位有效数字,小数点后的数最多保存7位,小数点后前6位是精确的, float类型的数值必须带f
float a = 2;
System.out.println(a);//输出2.0,此时2.0的数据类型为float
System.out.println(1);//输出1,此时1的数据类型为int
System.out.println(1.0);//输出1.0,此时的1.0的数据类型为double
double 保留16位有效数字,一般情况小数点后的数最多保存15位,小数点后14位是精确的。
double d1 = 1.123456789012345678d;
System.out.println(d1);//输出1.1234567890123457
double d2 = 9.123456789012345678d;
System.out.println(d2);//输出9.123456789012346
注意:在计算机中浮点型修饰的值并不是一个具体的值,所以不建议在程序中经常使用该类型进行数值判断、计算
逻辑型
数据类型 | 位数 | 占存储空间 | 默认值 | 取值范围 | 举例说明 |
---|---|---|---|---|---|
boolean(布尔值) | 8 | 1字节 | false | true、false | boolean b = true; |
boolean 类型数据只允许取值true或false,不能用0或者非0整数代替true和false。
没有明确的大小,即使一个bit 就能用,最小的内存寻址单元就是byte,所以占用一个byte。
boolean flag1 = true;
boolean flag2 = false;
boolean flag3 = 123;//错误,boolean类型的值只能是true和false
字符型
数据类型 | 位数 | 占存储空间 | 默认值 | 取值范围 | 举例说明 |
---|---|---|---|---|---|
char(字符) | 16bit | 2个字节 | 空 | 0 - 216-1 | char c = ‘c’; |
对于char类型变量表示通常意义上的字符,内存中分配给2个字节,占16位。
//声明:字符采用一对单引号括起来
char c1 = '中';
System.out.println("字符型:" + c1);
char类型变量的取值范围是0~65535,可以理解为能够存放65535个字符,并且在这个范围中的数字都能够与int相互转换,如:
int c2 = 97;
System.out.println("字符型97:" + (char)c2);
int c3 = 20013;
System.out.println("字符型20013:" + (char)c3);
ASCII对照表
Java采用Unicode编码,因而可以使用16进制编码形式表示。
如:
char character = '\u0061';
System.out.println(character);
输出结果:a