Java 基本数据类型是最简单的数据类型,它们是 Java 语言预定义的,并且由关键字命名。基本数据类型直接存储值,而不是通过引用指向值,这使得它们在内存使用和性能上都非常高效。
Java 中的基本数据类型可以分为四类:整数类型、浮点类型、字符类型和布尔类型。
基本数据类型
整型类型
用于存储整数值(没有小数点)。
- byte: 8-bit整数,范围从
-128
到127
。 - short: 16-bit整数,范围从
-32,768
到32,767
。 - int: 默认的整型,32-bit整数,范围从
-2^31
到2^31-1
。 - long: 64-bit整数,范围从
-2^63
到2^63-1
,使用时应在数字后添加L
或l
后缀,如long number = 12345678910L;
。
浮点类型
用于存储有小数点的数值。
- float: 32-bit单精度浮点数,使用时应在数字后添加
F
或f
后缀,如float pi = 3.14F;
。 - double: 64-bit双精度浮点数,比
float
提供更大更精确的数值,如double e = 2.718281828459045;
。
字符类型
用于存储单个字符。
- char: 16-bit Unicode字符,使用单引号,如
char letter = 'A';
。
布尔类型
用于存储真(true)或假(false)值。
- boolean:
true
或false
,如boolean isJavaFun = true;
。
每种数据类型都有其对应的默认值,例如,对于基本类型的类成员变量,默认值为:数字是 0
或 0.0
,boolean
是 false
,char
是 unicode '\u0000'
(即 (char)0
)。
数值溢出
每种整数类型都有其大小限制,如果你尝试存储超出相应类型最大值的数字,就会发生数值溢出,导致负数或不正确的结果。
类型转换
在不同类型之间赋值时,可能需要进行类型转换:
-
自动类型提升(隐式转换):当将容量小的类型赋值给容量大的类型时自动进行。
int i = 100; long l = i; // 自动类型转换 float f = l; // 自动类型转换
-
强制类型转换(显式转换):当将容量大的类型赋值给容量小的类型时,需要使用括号进行强制转换,可能造成数据丢失。
double d = 100.04; long l = (long)d; // 强制类型转换 int i = (int)l; // 强制类型转换
字面量
在代码中直接写入的具体值称为字面量。例如,100
是一个整型字面量,3.14
是一个浮点数字面量,'A'
是一个字符字面量,true
是一个布尔字面量。
代码示例
下面是一个将所有基本数据类型的实例放入main
方法中的示例:
public class PrimitiveDataType {
public static void main(String[] args) {
byte myByte = 127; // byte类型示例
short myShort = 32767; // short类型示例
int myInt = 2147483647; // int类型示例
long myLong = 9223372036854775807L; // long类型示例,注意末尾的"L"标识
float myFloat = 3.14f; // float类型示例,注意末尾的"f"标识
double myDouble = 3.141592653589793; // double类型示例
char myChar = 'G'; // char类型示例
boolean myBoolean = false; // boolean类型示例
// 打印所有基本数据类型的值
System.out.println("byte: " + myByte);
System.out.println("short: " + myShort);
System.out.println("int: " + myInt);
System.out.println("long: " + myLong);
System.out.println("float: " + myFloat);
System.out.println("double: " + myDouble);
System.out.println("char: " + myChar);
System.out.println("boolean: " + myBoolean);
}
}
在这段代码中,每一种基本数据类型都在main
方法中创建了一个变量,并分别对他们进行了初始化。接着使用System.out.println
语句打印出每个变量的值。请注意,在初始化浮点型(float
)和长整型(long
)变量时,我们在数值后分别使用了f
和L
来表明它们的类型。
+ myByte
是将 myByte
变量的值转换为字符串并与前面的字符串 "byte: "
连接起来,以便一起打印输出。这里的 +
是一个字符串连接符,用于将文本和变量值拼成一段完整的信息,后续文章还会继续讲解 +
的其它作用。
运行以上代码输出结果如下:
byte: 127
short: 32767
int: 2147483647
long: 9223372036854775807
float: 3.14
double: 3.141592653589793
char: G
boolean: false