读书笔记——基本数据类型
Java语言有八种基本数据类型
- 逻辑类型:boolean
- 整数类型:byte、short、int、long
- 字符类型:char
- 浮点类型:float、double
除逻辑类型外,按精度从”低“到”高“排序:byte、short、char、int、long、float、double
逻辑类型
常量:true、false
使用关键字boolean来声明逻辑类型,声明时也可以赋初值,例如:
boolean x;
boolean flag = true;
整数类型
- byte型
byte x = -12;
byte y = 98;
对于byte型变量,内存分配给一个字节,占8位。因此byte型变量的取值范围是-27~27-1。
如果需要强调一个整数是byte型数据,可以使用强制转换运算的结果来表示:(byte)-12,(byte)98。
- short型
short x = 12;
short y = 1234;
对于short型变量,内存分配给两个字节,占16位。因此short型变量的取值范围是-215~215-1。
如果需要强调一个整数是short型数据,可以使用强制转换运算的结果来表示:(short)12,(short)1234。
- int型
常量:3000(十进制)、077(八进制)、0x3ABC(十六进制)。
变量: int x = 888;
int y = 9999;
对于int型变量,内存分配给四个字节,占32位。因此short型变量的取值范围是-231~231-1。
如果需要强调一个整数是int型数据,可以使用强制转换运算的结果来表示:(int)888,(int)9999。
- long型
常量:3000L(十进制)、077L(八进制)、0x3ABCL(十六进制)。
需要注意的是:long型常量用后缀L来表示。
变量: long x = 888L;
long y = 9999L;
对于long型变量,内存分配给八个字节,占64位。因此long型变量的取值范围是-263~263-1。
如果需要强调一个整数是long型数据,可以使用强制转换运算的结果来表示:(long)888,(long)9999。
字符类型
常量:'A','?','9'等,即用单引号括起来的Unicode表中的一个字符。
变量: char c = 'c';
char home = '家';
对于char型变量,内存分配给两个字节,占16位,最高位不是符号位,没有负数的char。char型变量的取值范围是0~65535。
对于以下的语句:char x='a';
内存x中存储的是97,97是字符a在Unicode表中的排序位置。因此,可写成: char x = 97;
需要注意的是,有些字符不能通过键盘输入到字符串或程序中,这时需要使用转义字符常量:
转义字符 | \n | \b | \t | \' | \" | \\ |
作用 | 换行 | 退格 | 水平制表 | 单引号 | 双引号 | 反斜线 |
下面做一个小测试,显示一些字符在Unicode表中的位置,以及Unicode表中某些位置的字符:
浮点类型
- float型
常量:453.5439f、213.3f(小数表示法)、2e44f(2×1044,指数表示法)。
需要注意的是,常量后面必须有后缀 f 或 F 。
变量: float x = 22.76f;
float y = 123.55f;
对于float型变量,内存分配给4个字节,占32位,float型变量的取值范围是10-38~1038和-1038~10-38。
- double型
常量:2389.435d、29583.865、0.05(小数表示法)、1e-90(1×10-90,指数表示法)。
对于double常量,可以有后缀 d 或 D,也可以省略该后缀。
变量: double x = 23.235;
double y = 35.53D;
对于double型变量,内存分配给8个字节,占64位,double型变量的取值范围是10-308~10308和-10-308~10308。
PS:①:当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算(将导致精度的损失)。
②:当把一个double型常量赋值给一个float型变量时,没有进行强制转换运算,讲导致语法错误。
本人对于float型和double型的取值范围和有效数字没有十分清楚,网上的说法也各有不同,如有错,望指正。
以后有新的理解,必来重写本篇。