跳转到内容

Java数据类型

来自代码酷
Admin留言 | 贡献2025年4月30日 (三) 18:52的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

Java数据类型[编辑 | 编辑源代码]

Java数据类型是Java编程语言中用于声明变量或对象的类型系统,它定义了数据的存储方式、操作规则以及取值范围。Java是静态类型语言,所有变量必须先声明类型后使用。数据类型分为两大类:基本数据类型(Primitive Data Types)引用数据类型(Reference Data Types)

基本数据类型[编辑 | 编辑源代码]

Java的8种基本数据类型是语言内置的,直接存储值而非引用。它们按用途可分为四类:

整数类型[编辑 | 编辑源代码]

整数类型对比
类型 大小(字节) 取值范围 默认值
byte 1 -128 到 127 0
short 2 -32,768 到 32,767 0
int 4 -231 到 231-1 0
long 8 -263 到 263-1 0L

示例代码:

public class IntegerExample {
    public static void main(String[] args) {
        byte smallNumber = 100;
        int mediumNumber = 100000;
        long bigNumber = 10000000000L; // 注意L后缀
        
        System.out.println("byte值: " + smallNumber);
        System.out.println("int值: " + mediumNumber);
        System.out.println("long值: " + bigNumber);
    }
}

输出:

byte值: 100
int值: 100000
long值: 10000000000

浮点类型[编辑 | 编辑源代码]

浮点类型对比
类型 大小(字节) 精度 默认值
float 4 6-7位有效数字 0.0f
double 8 15位有效数字 0.0d

科学计算示例:

float piFloat = 3.1415927f; // 注意f后缀
double piDouble = 3.141592653589793;

System.out.println("float圆周率: " + piFloat);
System.out.println("double圆周率: " + piDouble);

字符类型[编辑 | 编辑源代码]

  • char:2字节,存储Unicode字符,默认值\u0000
  • 表示方式:
 * 直接字符:'A'
 * Unicode值:'\u0041'
 * 转义字符:'\n'

布尔类型[编辑 | 编辑源代码]

  • boolean:1位,只有true/false,默认值false
  • 不能与整数类型互换(不同于C语言)

引用数据类型[编辑 | 编辑源代码]

引用类型存储对象的内存地址,包括:

  • 类(如String
  • 接口
  • 数组
  • 枚举

字符串示例:

String message = "Hello Java";
int[] numbers = {1, 2, 3}; // 数组也是引用类型

System.out.println(message.length()); // 输出:10
System.out.println(numbers[0]);      // 输出:1

类型转换[编辑 | 编辑源代码]

自动类型转换(隐式)[编辑 | 编辑源代码]

小类型→大类型自动转换:

graph LR byte --> short --> int --> long --> float --> double char --> int

强制类型转换(显式)[编辑 | 编辑源代码]

大类型→小类型需强制转换,可能丢失精度:

double price = 9.99;
int intPrice = (int) price; // 结果为9,丢失小数部分

内存模型[编辑 | 编辑源代码]

pie title 基本数据类型内存占用 "byte/short/char" : 1 "int/float" : 4 "long/double" : 8 "boolean" : 1

实际应用案例[编辑 | 编辑源代码]

场景:电商系统商品库存管理

public class Product {
    private long id;          // 商品ID(大范围)
    private String name;      // 商品名称(引用类型)
    private float price;      // 价格(带小数)
    private int stock;        // 库存(整数)
    private boolean available;// 是否上架
    
    // 构造方法和方法省略...
}

常见问题[编辑 | 编辑源代码]

  • Q:floatdouble如何选择?
 * A:金融计算优先用BigDecimal,普通计算优先用double
  • Q:char能存储中文吗?
 * A:可以,Java的char使用UTF-16编码,一个中文占1个char

进阶知识[编辑 | 编辑源代码]

  • 值传递 vs 引用传递:基本类型按值传递,引用类型按引用传递
  • 自动装箱/拆箱:基本类型与包装类(如intInteger)的自动转换
  • 类型默认值规则:
 * 类成员变量:有默认值
 * 局部变量:必须显式初始化

类型安全=编译时类型检查+运行时类型检查总操作次数