数据类型
上节回顾
在上一节内容中,我们在声明变量的时候用到了一个表示整数的数据类型int,且它的范围是:-2147483648 到 2147483647。
正文
在java中涉及到的数据类型的概念有两类:基本数据类型和引用数据类型,那在本节中我们先学习基本数据类型,引用数据类型放到后面的章节中了解。
Java 提供了八种基本类型,这八种基本类型可以分为四个类别:整型、浮点型、字符型以及布尔型。下面是对这八种基本类型的详细介绍:
-
整型
- byte:8 位,有符号的,范围从 -128 到 127。
- short:16 位,有符号的,范围从 -32,768 到 32,767。
- int:32 位,有符号的,范围从 -2,147,483,648 到 2,147,483,647。这是最常用的整型。
- long:64 位,有符号的,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。使用 long 类型时,需要在数字后面加上
L
或l
(如2147483648L
)。
说明: 在计算机中,位数指的是用来表示该类型数值所包含二进制位的数量。位数决定了整型可以表示的数值范围。这是因为每个二进制位可以是0或1,所以n位的二进制数可以表示2的n次方个不同的状态。 然而,整型数据通常使用补码表示法来存储正数和负数。补码表示法中,最高位(最左边的位)作为符号位,0代表正数,1代表负数。这意味着在n位的整型中,实际上只有n-1位用于表示数值的大小。 对于有符号整型(即可以表示正数和负数的整型),其范围可以按照以下方式计算: 最小值(负数的最大绝对值): -(2的n-1次方) 最大值(最大的正数): (2的n-1次方)-1 所以对于8位的byte类型,范围是从-(2的8-1次方)到(2的8-1次方)-1,即从-128到127。 其他整型类型的范围计算同理。
-
浮点型,也就是可以表示小数点的数。
- float:单精度,32 位 IEEE 754 浮点数,范围很广但精度较低。使用 float 类型时,需要在数字后面加上
F
或f
(如3.14F
)。 - double:双精度,64 位 IEEE 754 浮点数,范围比 float 更大,精度也更高。这是默认的浮点类型。
说明: 浮点数的长度计算比较麻烦,大家此时可能理解不了,先留个疑问,等之后大家把java掌握到一定程度再讲。
- float:单精度,32 位 IEEE 754 浮点数,范围很广但精度较低。使用 float 类型时,需要在数字后面加上
-
字符型
- char:16 位 Unicode 字符。字符字面量(如
'a'
)在 Java 中是 char 类型的。
- char:16 位 Unicode 字符。字符字面量(如
-
布尔型
- boolean:表示真假值的布尔类型,有两个可能的值:
true
和false
。
- boolean:表示真假值的布尔类型,有两个可能的值:
我们说了整型是有范围的,我们现在声明一个byte类型的变量b,然后给他赋予一个超过它范围的整数,idea会报错。
对于其他的整型数据类型同理,如果赋值的整数超过了这个变量类型的长度,那么就会编译失败。
对于浮点数类型的变量同理,如果小数点的位数超过了它的长度,就会编译失败。
字符型char
char用来表示单个字符,在java中使用Unicode编码来表示字符,因此它可以表示世界上大多数语言的字符。
用于存储单个字符,如字母或数字。Java中的字符使用单引号表示,例如:char letter = 'A';
char
类型的变量可以存储任何Unicode字符。
public class CharExample {
public static void main(String[] args) {
char myChar = 'A';
char myUnicodeChar = '\u0041'; // 使用Unicode编码表示字符A
char myChineseChar = '中'; // 存储一个中文字符
System.out.println(myChar);
System.out.println(myUnicodeChar);
System.out.println(myChineseChar);
}
}
在Java中,char
类型也支持转义序列,如\n
表示换行,\t
表示制表符等。
char newline = '\n';
char tab = '\t';
char
类型可以和其他基本数据类型进行转换,尤其是和int
类型。在转换时,char
类型的值会被当作其对应的Unicode编码值。
char myChar = 'A';
int myInt = myChar; // 自动转换,myInt的值是65
在Java中,字符(char
类型)和它们对应的数字(通常是ASCII码或Unicode码)之间有一个固定的关系。对于26个英文字母(大写和小写),它们的ASCII码和Unicode码是相同的。
大写字母A到Z对应的数字(ASCII码/Unicode码)是65到90。
小写字母a到z对应的数字(ASCII码/Unicode码)是97到122。
例如,大写字母’A’对应的数字是65,小写字母’a’对应的数字是97。
public class CharToNumber {
public static void main(String[] args) {
char uppercaseA = 'A';
char lowercaseA = 'a';
int uppercaseANumber = uppercaseA; // 自动转换为对应的数字
int lowercaseANumber = lowercaseA; // 自动转换为对应的数字
System.out.println("大写字母A对应的数字是: " + uppercaseANumber);
System.out.println("小写字母a对应的数字是: " + lowercaseANumber);
}
}
控制台输出:
大写字母A对应的数字是: 65
小写字母a对应的数字是: 97
布尔类型boolean
在java中boolean类型用来表示真和假,只有两个值,分别是true和false。