一、基本数据类型
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);
六、最佳实践建议
- 优先使用基本类型而非包装类(避免装箱开销)
- 字符串操作使用StringBuilder(避免String不可变导致的性能问题)
- 集合选择:频繁插入选LinkedList,随机访问选ArrayList
- 泛型边界:使用
<T extends Number>限定类型范围 - 枚举优于静态常量:提供更好的类型安全和扩展性
通过掌握这些类型系统特性,你可以编写更安全、高效且可维护的Java代码。每种类型都有其适用场景,理解并合理运用它们是成为专业Java开发者的关键基础。
6499

被折叠的 条评论
为什么被折叠?



