变量的数据类型
Java是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须先声明变量的数据类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序在编译期间就会出现类型匹配错误的问题。
在Java中变量的数据类型分为两种:基本数据类型和引用数据类型。Java中所有的数据类型如图1所示。
图1 数据类型
其中,8种基本数据类型是Java语言内嵌的,在任何操作系统中都具有相同大小和属性,而引用数据类型是在Java程序中由编程人员自己定义的数据类型。本章此处重点介绍的是Java中的基本数据类型,引用数据类型会在以后的章节中进行详细地讲解。
1.整数类型变量
整数类型变量用来存储整数数值,即没有小数部分的值。在Java中,为了给不同大小范围内的整数合理地分配存储空间,整数类型分为4种不同的类型:字节型(byte)、短整型(short)、整型(int)和长整型(long),四种类型所占存储空间的大小以及取值范围如表1所示。
表1 整数类型
类型名 | 占用空间 | 取值范围 |
---|---|---|
byte | 8位(1个字节) | -27 ~ 27-1 |
short | 16位(2个字节) | -215 ~ 215-1 |
int | 32位(4个字节) | -231 ~ 231-1 |
long | 64位(8个字节) | -263 ~ 263-1 |
表1中,列出了4种整数类型变量所占的空间大小和取值范围。其中,占用空间指的是不同类型的变量分别占用的内存大小,如一个int类型的变量会占用4个字节大小的内存空间。取值范围是变量存储的值不能超出的范围,如一个byte类型的变量存储的值必须是-27 ~ 27-1之间的整数。
在为一个long类型的变量赋值时需要注意一点,所赋值的后面要加上一个字母“L”(或小写“l”),说明赋值为long类型。如果赋的值未超出int型的取值范围,则可以省略字母“L”(或小写“l”)。具体示例如下:
long num = 2200000000L; // 所赋的值超出了int型的取值范围,后面必须加上字母L
long num = 198L; // 所赋的值未超出int型的取值范围,后面可以加上字母L
long num = 198; // 所赋的值未超出int型的取值范围,后面可以省略字母L
2.浮点数类型变量
浮点数类型变量用来存储小数数值。在Java中,浮点数类型分为两种:单精度浮点数(float)和双精度浮点数(double)。double型所表示的浮点数比float型更精确,两种浮点数所占存储空间的大小以及取值范围如表2所示。
表2 浮点类型
类型名 | 占用空间 | 取值范围 |
---|---|---|
float | 32位(4个字节) | 1.4E-45 ~ 3.4E+38,-1.4E-45 ~ -3.4E+38 |
double | 64位(8个字节) | 4.9E-324 ~ 1.7E+308,-4.9E-324 ~ -1.7E+308 |
表2中,列出了两种浮点数类型变量所占的空间大小和取值范围,在取值范围中,E表示以10为底的指数,E后面的“+”号和“-”号代表正指数和负指数,例如1.4E-45表示1.4*10-45。
在Java中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时,所赋值的后面一定要加上字母“F”(或者小写“f”),而为double类型的变量赋值时,可以在所赋值的后面加上字符“D”(或小写“d”),也可以不加。具体示例如下:
float f = 123.4f; // 为一个float类型的变量赋值,后面必须加上字母f或F
double d1 = 199.3d; // 为一个double类型的变量赋值,后面可以加上字母d或D
double d2 = 100.1; // 为一个double类型的变量赋值,后面可以省略字母d或D
在程序中也可以为一个浮点数类型变量赋予一个整数数值,例如下面的写法也是可以的。
float f = 100; // 声明一个float类型的变量并赋整数值
double d = 100; // 声明一个double类型的变量并赋整数值
3.字符类型变量
字符类型变量用于存储一个单一字符,在Java中用char表示。Java中每个char类型的字符变量都会占用2个字节。在给char类型的变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来,如'a',也可以将char类型的变量赋值为0~65535范围内的整数,计算机会自动将这些整数转化为所对应的字符,如数值97对应的字符为'a'。下面的两行代码可以实现同样的效果。
char c = 'a'; // 为一个char类型的变量赋值字符'a'
char ch = 97; // 为一个char类型的变量赋值整数97,相当于赋值字符'a'
4.布尔类型变量
布尔类型变量用来存储布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和false。具体示例如下:
boolean flag = false; // 声明一个boolean类型的变量,初始值为false
flag = true; // 改变flag变量的值为true