1.基本数据类型
Java中的基本数据类型分为四类八种,即:
四类:整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)、逻辑类型(boolean)
八种:字节型(byte)、短整型(short)、整形(int)、长整型(long)、单精度浮点型(float)、双精度浮点型字符型(double)、布尔型(boolean)
数据类型 | 关键字 | 内存占用 | 取值范围 |
字节型 | byte | 1字节 | -128 ~ 127 |
短整型 | short | 2字节 | -32768 ~ 32767 |
整形 | int | 4字节 | -2^31 ~ 2^31 -1 |
长整型 | long | 8字节 | -2^63 ~ 2^63 -1 |
单精度浮点型 | float | 4字节 | 有范围,但一般不关注 |
双精度浮点型 | double | 8字节 | 有范围,但一般不关注 |
字符型 | char | 2字节 | 0 ~ 65535 |
布尔型 | boolean | 没有明确规定 | true 和 false |
在Java中,整形和浮点型都是有符号的
字节是计算机中表示空间大小的基本单位,在计算机内存中,1个字节(byte)= 8个二进制位(bit)
2.整数类形
在Java中整形没有有符号和无符号之分,因此每个整形类型的变量都会将最高位作为符号位。
整数类型的变量在定义时,若没有给出初值,且在使用前没有设置初值,则编译时会报错
因此在定义整形类型变量时,如果没有合适的初始值,可将初始值设置为0
在为变量设置初始值的时候,值不能超过整数类型的表示范围,否则会导致溢出
(1)byte类型
byte在内存中占1个字节,8个二进制位。
byte b = 10;
byte的范围为-128 ~ 127,当超出其范围时,会报错
(2)short类型
short在内存中占2个字节,16个二进制位。
short类型变量的取值范围为 -32768 ~ 32767
short s = 10;
(3)int类型
int在内存中占4个字节,32个二进制位。
int类型变量的取值范围为-2^31 ~ 2^31 - 1
在定义变量时,若未初始化,且在使用前,未赋值,则会报错
publicclassTest { publicstaticvoidmain(String[] args) { inta; System.out.println(a); } }
运行结果
(4)long类型
long在内存中占8个字节,64位。
long类型变量的取值范围为-2^63 ~ 2^63 - 1
为了区分int类型与long类型,一般建议在long类型变量后加上L或者l,由于l与1不好区分,更推荐加上L
publicclassTest { publicstaticvoidmain(String[] args) { longl=10L; System.out.println(l); } }
3.浮点类型
浮点数与整数在内存中的存储方式不同,不能使用2的n次方来计算浮点类型变量的取值范围
浮点类型变量的内存布局遵守IEEE 754标准(与C语言相同),使用有限的内存空间表示可能无限的小数,因此会存在一定的精度误差,所以浮点数是近似值,而不是精确值
浮点类型的变量在定义时,若没有给出初值,且在使用前没有设置初值,则编译时会报错
建议在定义变量时,就为浮点类型变量赋初始值,若没有合适的初始值,可将其设置为0.0
(1)单精度浮点型
float在内存中占4个字节,32个二进制位。
float类型的变量在定义时,必须在后面加上f或者F
float f = 1.2f;
若不加上f或F,则会报错
(2)双精度浮点型
double在内存中占8个字节,64个二进制位。
double d = 1.2;
4.字符类型
char在内存中占2个字节,16个二进制位。
Java中使用 单引号 + 单个字母 的形式来表示字符值。
计算机中的字符本质上是一个整数。在C语言中使用ASCII码表示对应的字符,而Java中使用Unicode表示字符。因此一个字符占用两个字节,表示的字符种类更多。(可以表示中文)
char c = 'a';
char ch = '你';
5.逻辑类型
boolean类型的变量只有两种取值,即true和false,true为真,false为假
boolean类型不能与int类型相转换,且不存在1表示true,0表示false的用法,不能对boolean类型的变量进行+、-等运算操作
boolean flag = true;
在使用布尔类型变量时,若没有给出初值,且在使用前没有设置初值,则编译时也会报错
在Java虚拟机中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令。