Java语言的基本类型详解(最新)

一、基本数据类型

Java提供8种基本数据类型,分为整数型、浮点型、字符型和布尔型:

1. 整数型(4种)

  • byte:8位,-128~127,适合存储小范围整数
  • short:16位,-32,768~32,767,兼容旧系统
  • int:32位,默认整数类型,-231~231-1
  • long:64位,大范围整数,需加L后缀(如9999999999L)
byte a = 100;
int b = 1000000;
long c = 2147483648L;  // 超过int范围需加L

2. 浮点型(2种)

  • float:32位,7位有效数字,需加F后缀(如3.14F)
  • double:64位,15位有效数字,默认浮点类型
float pi = 3.14F;
double gravity = 9.80665;

3. 字符型

  • char:16位,Unicode编码,存储单个字符
  • 支持转义字符(如\n换行、\uXXXX表示Unicode)
char letter = 'A';
char chinese = '中';

4. 布尔型

  • boolean:1字节,true/false,用于逻辑判断
boolean flag = true;
if(flag) {
    System.out.println("条件成立");
}

二、引用数据类型

引用类型存储对象地址,主要包括:

1. 包装类

  • 对应基本类型的对象版本(如Integer对应int)
  • 支持自动装箱/拆箱(如Integer i = 100;

2. 字符串

  • String:不可变字符序列,使用常量池优化
  • 常用方法:length()equals()substring()
String s1 = "hello";
String s2 = new String("hello");
System.out.println(s1 == s2);  // false(地址不同)
System.out.println(s1.equals(s2));  // true(内容相同)

3. 集合框架

  • List:有序可重复(ArrayList、LinkedList)
  • Set:无序不可重复(HashSet、TreeSet)
  • Map:键值对映射(HashMap、TreeMap)

ArrayList示例:

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list.get(1));  // 输出Python

三、泛型与类型推断

1. 泛型(Generics)

  • 类型参数化,提高代码安全性和复用性
  • 常用场景:集合框架、自定义泛型类/方法

泛型类示例:

class Box<T> {
    private T content;
    public void set(T t) { content = t; }
    public T get() { return content; }
}

Box<Integer> intBox = new Box<>();
intBox.set(666);

2. 类型推断(var)

  • Java 10+特性,局部变量类型自动推断
  • 保持代码简洁同时不损失类型安全

示例代码:

var list = new ArrayList<String>();  // 推断为ArrayList<String>
var num = 100;  // 推断为int

四、枚举类型

  • 定义固定常量集合,提供类型安全
  • 支持字段、方法和构造函数

枚举示例:

enum Day {
    MONDAY(1), TUESDAY(2), WEDNESDAY(3);
    
    private final int value;
    Day(int value) { this.value = value; }
    public int getValue() { return value; }
}

Day today = Day.MONDAY;
System.out.println(today.getValue());  // 输出1

五、特殊引用类型

1. 四种引用类型

  • 强引用:普通对象引用,阻止垃圾回收
  • 软引用:内存不足时回收,用于缓存
  • 弱引用:下次GC时回收,避免内存泄漏
  • 虚引用:配合ReferenceQueue跟踪回收

软引用示例:

SoftReference<User> ref = new SoftReference<>(new User("张三"));
User user = ref.get();  // 可能返回null(若内存不足)

2. 数组与集合

  • 数组:固定长度,存储连续内存
  • 集合:动态扩容,丰富的操作方法

数组与ArrayList对比:

// 数组
int[] scores = new int[5];
scores[0] = 100;

// 动态集合
List<Integer> scoresList = new ArrayList<>();
scoresList.add(100);

六、最佳实践建议

  1. 优先使用基本类型而非包装类(避免装箱开销)
  2. 字符串操作使用StringBuilder(避免String不可变导致的性能问题)
  3. 集合选择:频繁插入选LinkedList,随机访问选ArrayList
  4. 泛型边界:使用<T extends Number>限定类型范围
  5. 枚举优于静态常量:提供更好的类型安全和扩展性

通过掌握这些类型系统特性,你可以编写更安全、高效且可维护的Java代码。每种类型都有其适用场景,理解并合理运用它们是成为专业Java开发者的关键基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值