Java 基本数据类型

8 阅读4分钟

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.0boolean 是 falsechar 是 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)变量时,我们在数值后分别使用了fL来表明它们的类型。

+ myByte 是将 myByte 变量的值转换为字符串并与前面的字符串 "byte: " 连接起来,以便一起打印输出。这里的 + 是一个字符串连接符,用于将文本和变量值拼成一段完整的信息,后续文章还会继续讲解 + 的其它作用。

运行以上代码输出结果如下:

byte: 127
short: 32767
int: 2147483647
long: 9223372036854775807
float: 3.14
double: 3.141592653589793
char: G
boolean: false