java数据类型

一、基本数据类型(Primitive Data Types)

Java 定义了 8 种基本数据类型,它们直接存储数据值,不需要实例化对象。分为以下四类:

1. 整数类型
类型大小(字节)取值范围默认值示例
byte1-128 ~ 1270byte b = 10
short2-32768 ~ 327670short s = 100
int4-2³¹ ~ 2³¹-1(约±21亿)0int i = 1000
long8-2⁶³ ~ 2⁶³-10Llong l = 1000000L

注意:
long 类型赋值时建议加上 L 后缀(如 100L),否则会被视为 int
• 整数运算默认使用 int 类型,如 byteshort 参与运算时会自动提升为 int


2. 浮点类型
类型大小(字节)精度默认值示例
float46~7位有效小数0.0ffloat f = 3.14f
double815位有效小数0.0ddouble d = 3.14

注意:
float 赋值时必须加上 fF 后缀,否则会被视为 double
• 浮点数存在精度丢失问题,如 0.1 + 0.2 ≠ 0.3(需用 BigDecimal 处理高精度计算)。


3. 字符类型
类型大小(字节)取值范围默认值示例
char2Unicode字符(0 ~ 65535)‘\u0000’char c = 'A'

特点:
• 使用单引号 '' 赋值。
• 可表示转义字符(如 \n\t)或 Unicode(如 '\u0041' 表示 A)。


4. 布尔类型
类型大小(字节)取值范围默认值示例
boolean未明确定义true/falsefalseboolean b = true

注意:
• Java 中 boolean 不能与整数类型(如 01)互换。


二、引用数据类型(Reference Data Types)

引用数据类型存储的是对象的引用(内存地址),而非实际值。包括以下类型:

1. 类(Class)

• 如 String、自定义类(如 Person)等。
示例:

String str = "Hello"; // str 存储的是字符串对象的引用
2. 接口(Interface)

• 如 ListMap 等。
示例:

List<Integer> list = new ArrayList<>();
3. 数组(Array)

• 可以是基本类型或引用类型的数组。
示例:

int[] arr = {1, 2, 3}; // 基本类型数组
String[] names = new String[5]; // 引用类型数组
4. 枚举(Enum)

• 预定义常量的集合。
示例:

enum Color { RED, GREEN, BLUE }
Color color = Color.RED;

三、基本类型 vs 引用类型

特性基本类型引用类型
存储内容直接存储数据值存储对象的内存地址
内存分配栈(Stack)堆(Heap),栈中存储引用地址
默认值有默认值(如 00.0f 等)默认值为 null
传递方式按值传递(复制值)按引用传递(复制地址)
内存占用固定大小(如 int 占4字节)大小不固定,取决于对象

四、自动装箱与拆箱(Autoboxing/Unboxing)

Java 5+ 支持基本类型与对应包装类的自动转换:
装箱(Boxing):基本类型 → 包装类(如 intInteger)。
拆箱(Unboxing):包装类 → 基本类型(如 Integerint)。

示例:

Integer num = 10; // 自动装箱:等价于 Integer.valueOf(10)
int n = num;      // 自动拆箱:等价于 num.intValue()

五、注意事项

  1. 类型转换
    • 小范围类型 → 大范围类型:自动转换(如 intdouble)。
    • 大范围类型 → 小范围类型:需强制转换(可能丢失精度)。

    double d = 3.14;
    int i = (int) d; // i = 3
    
  2. 字符串与基本类型转换

    // String → 基本类型
    int num = Integer.parseInt("123");
    // 基本类型 → String
    String s = String.valueOf(123);
    
  3. 特殊值处理
    floatdouble 支持特殊值(如 NaNInfinity)。
    • 引用类型需处理 null 值,避免 NullPointerException


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值