Java基本数据类型大全(非常详细)
在 Java 中有 8 种基本数据类型来存储数值、字符和布尔值,如下图所示:
整型数据根据它所占内存大小的不同,可分为 byte、short、int 和 long 4 种类型。它们具有不同的取值范围,如下表所示。
下面分别对这 4 种整型数据类型进行介绍。
定义 long 类型变量,代码如下:
注意,整数在 Java 程序中有 3 种表示形式,分别为十进制、八进制和十六进制:
Java 语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),它们具有不同的取值范围,如下表所示。
在默认情况下,小数都被看作 double 型,若想使用 float 型小数,则需要在小数后面添加 F 或 f。另外,可以使用后缀 d 或 D 来明确表明这是一个 double 类型数据,但加不加 d 或 D 并没有硬性规定。而定义 float 型变量时,如果不加 F 或 f,系统会认为它是一个 double 类型数据,并出错。
定义浮点类型变量,代码如下:
【实例】根据身高体重计算 BMI 指数。
创建 BMIexponent 类;声明 double 型变量 height 以记录身高,单位为米;声明 int 型变量 weight 以记录体重,单位为千克;根据 BMI=体重/(身高×身高)计算 BMI 指数。
实例代码如下:
在定义字符型变量时,要用单引号表示,如 's' 表示一个字符。但是 "s" 则表示一个字符串,虽然只有一个字符,但由于使用双引号,因此它仍然表示字符串,而不是字符。
使用 char 关键字可定义字符变量,其语法如下:
由于字符 a 在 Unicode 表中的排序位置是97,因此允许将上面的语句写成:
同 C 和 C++ 语言一样,Java 语言也可以把字符作为整数对待。由于 Unicode 编码采用无符号编码,可以存储 65536 个字符(0x0000~0xffff),因此 Java 中的字符几乎可以处理所有国家的语言文字。若想得到一个 0~65536 的数所代表的 Unicode 表中相应位置上的字符,必须使用 char 型显式转换。
【实例】查看字符与 Unicode 码互转的结果
在项目中创建类 Gess,编写如下代码,将 Unicode 表中某些位置上的字符以及一些字符在 Unicode 表中的位置输出到控制台上。
布尔类型只有 true 和 false 两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。
布尔类型通常被用在流程控制中,作为判断条件。定义布尔类型变量,代码如下:

Java整数类型
整数类型简称整型,用来存储整数数值,即没有小数部分的数值。它们可以是正数,也可以是负数。整型数据根据它所占内存大小的不同,可分为 byte、short、int 和 long 4 种类型。它们具有不同的取值范围,如下表所示。
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
byte | 8位 | -128~127 |
short | 16位 | -32768~32767 |
int | 32位 | -2147483648~2147483647 |
long | 64位 | -9223372036854775808~9223372036854775807 |
下面分别对这 4 种整型数据类型进行介绍。
1) Java int型
定义 int 型变量有以下 4 种语法:int x; // 定义 int 型变量 x int x, y; // 同时定义 int 型变量 x, y int x = 10, y = -5; // 同时定义 int 型变量 x, y 并赋予初值 int x = 5 + 23; // 定义 int 型变量 x,并赋予公式(5+23)计算结果的初值int 型变量在内存中占 4 字节,也就是 32 位,在计算机中 bit 是由 0 和 1 来表示的,所以 int 型值 5 在计算机中是这样显示的:
00000000 00000000 00000000 00000101
int 型是 Java 整型值的默认数据类型。当对多个尚未定义数据类型的整数做运算时,运算的结果将默认为 int 类型。例如,下面这行代码:System.out.println(15+20); // 输出35等同于如下代码:
int a = 15; int b = 20; int c = a + b; System.out.println(c); // 输出35
2) Java byte型
byte 型的定义方式与 int 型的定义方式相同。定义 byte 类型变量,代码如下:byte a; byte a, b, c; byte a = 19, b = -45;
3) Java short型
short 型的定义方式与 int 型的定义方式相同。定义 short 类型变量,代码如下:short s; short s, t, r; short s = 1000, t = -19; short s = 20000 / 10;
4) Java long型
由于 long 类型变量的取值范围比 int 类型变量的取值范围大,且属于高精度数据类型,因此在赋值时要和 int 型做出区分,需要在整数后加 L 或者 l(小写的 L)。定义 long 类型变量,代码如下:
long number; // 定义 long 型变量 number long number, rum; // 同时定义 long 型变量 number 和 rum long number = 123456781L, rum = -987654321L; // 同时定义 long 型变量 number 和 rum 并赋予初值 long number = 123456789L * 987654321L; // 定义 long 型变量 number,并赋予公式(123456789L * 987654321L)计算结果的初值
注意,整数在 Java 程序中有 3 种表示形式,分别为十进制、八进制和十六进制:
- 十进制:十进制的表现形式大家都很熟悉,如 120、0、-127。除了数字 0,不能以 0 作为其他十进制数的开头。
- 八进制:如 0123(转换成十进制数为 83)、-0123(转换成十进制数为 -83)。八进制数必须以 0 开头。
- 十六进制:如 0x25(转换成十进制数为 37)、0Xb01e(转换成十进制数为 45086)。十六进制数必须以 0X 或 0x 开头。
Java浮点类型
浮点类型简称浮点型,用来存储含有小数部分的数值。Java 语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),它们具有不同的取值范围,如下表所示。
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
float | 32位 | 1.4E-45~3.4028235E38 |
double | 64位 | 4.9E-324~1.7976931348623157E308 |
在默认情况下,小数都被看作 double 型,若想使用 float 型小数,则需要在小数后面添加 F 或 f。另外,可以使用后缀 d 或 D 来明确表明这是一个 double 类型数据,但加不加 d 或 D 并没有硬性规定。而定义 float 型变量时,如果不加 F 或 f,系统会认为它是一个 double 类型数据,并出错。
定义浮点类型变量,代码如下:
float f1 = 13.23f; // 定义 float 型变量 f1 并赋予初值 13.23 double d1 = 4562.12d; // 定义 double 型变量 d1 并赋予初值 4562.12d double d2 = 45678.1564; // 定义 double 型变量 d2 并赋予初值 45678.1564
注意,浮点值属于近似值,在系统中运算后的结果可能与实际有偏差。
【实例】根据身高体重计算 BMI 指数。
创建 BMIexponent 类;声明 double 型变量 height 以记录身高,单位为米;声明 int 型变量 weight 以记录体重,单位为千克;根据 BMI=体重/(身高×身高)计算 BMI 指数。
实例代码如下:
public class BMlexponent { public static void main(String[] args) { double height = 1.72; // 身高变量,单位:米 int weight = 70; // 体重变量,单位:千克 double exponent = weight / (height * height); // BMI计算公式 System.out.println("您的身高为:" + height); System.out.println("您的体重为:" + weight); System.out.println("您的 BMI 指数为:" + exponent); System.out.print("您的体重属于:"); if (exponent < 18.5) { System.out.println("体重过轻"); // 判断BMI指数是否小于18.5 } else if (exponent >= 18.5 && exponent < 24.9) { System.out.println("正常范围"); // 判断BMI指数是否为18.5~24.9 } else if (exponent >= 24.9 && exponent < 29.9) { System.out.println("体重过重"); // 判断BMI指数是否为24.9~29.9 } else if (exponent >= 29.9) { System.out.println("肥胖"); // 判断BMI指数是否大于等于29.9 } } }运行结果如下:
您的身高为:1.72
您的体重为:70
您的BMI指数为:23.661438615467823
您的体重属于:正常范围
Java字符类型
字符类型(char)用于存储单个字符,占用 16 位(两个字节)的内存空间。在定义字符型变量时,要用单引号表示,如 's' 表示一个字符。但是 "s" 则表示一个字符串,虽然只有一个字符,但由于使用双引号,因此它仍然表示字符串,而不是字符。
使用 char 关键字可定义字符变量,其语法如下:
char x = 'a';
由于字符 a 在 Unicode 表中的排序位置是97,因此允许将上面的语句写成:
char x = 97;
同 C 和 C++ 语言一样,Java 语言也可以把字符作为整数对待。由于 Unicode 编码采用无符号编码,可以存储 65536 个字符(0x0000~0xffff),因此 Java 中的字符几乎可以处理所有国家的语言文字。若想得到一个 0~65536 的数所代表的 Unicode 表中相应位置上的字符,必须使用 char 型显式转换。
【实例】查看字符与 Unicode 码互转的结果
在项目中创建类 Gess,编写如下代码,将 Unicode 表中某些位置上的字符以及一些字符在 Unicode 表中的位置输出到控制台上。
public class Gess { // 定义类 public static void main(String[] args) { // 主方法 char word = 'd', word2 = '@'; // 定义 char 型变量 int p = 23045, p2 = 45213; // 定义 int 型变量 System.out.println("'d' 在 Unicode 表中的顺序位置是:" + (int) word); // 输出字符 'd' 的 Unicode 码点 System.out.println("@ 在 Unicode 表中的顺序位置是:" + (int) word2); // 输出字符 '@' 的 Unicode 码点 System.out.println("Unicode 表中的第 23045 位是:" + (char) p); // 输出 Unicode 码点 23045 对应的字符 System.out.println("Unicode 表中的第 45213 位是:" + (char) p2); // 输出 Unicode 码点 45213 对应的字符 } }运行结果如下:
d在Unicode表中的顺序位置是:100
@在Unicode表中的顺序位置是:64
Unicode表中的第23045位是:娅
Unicode表中的第45213位是:?
Java 布尔类型
布尔类型又称逻辑类型,简称布尔型,通过关键字 boolean 来定义布尔类型变量。布尔类型只有 true 和 false 两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。
布尔类型通常被用在流程控制中,作为判断条件。定义布尔类型变量,代码如下:
boolean b; // 定义布尔型变量 b boolean b1, b2; // 定义布尔型变量 b1、b2 boolean b = true; // 定义布尔型变量 b,并赋给初值 true