Java基础知识点总结:数据类型、方法重载重写、访问控制、静态关键字、字符串类与集合框架
1、数据类型
1.1 基本数据类型
整数类型
- byte:1字节(8位),范围:-128 ~ 127
- short:2字节(16位),范围:-32768 ~ 32767
- int:4字节(32位),默认整数类型
- long:8字节(64位),声明时需加
L
后缀(如long num = 100L;
)
浮点类型
- float:4字节(32位),单精度,声明需加
F
后缀(如float num = 3.14F;
) - double:8字节(64位),双精度,默认浮点类型
字符与布尔类型
- char:2字节(16位),存储Unicode字符(如
char c = 'A';
) - boolean:仅
true
和false
,JVM实现通常占1位
1.2 引用数据类型
- 类(Class):自定义类型(如
String
、自定义对象) - 接口(Interface):定义方法规范
- 数组(Array):固定长度的同类型集合(如
int[] arr = new int[5];
)
2、访问控制修饰符
修饰符 | 访问范围 | 典型用途 |
---|
private | 仅当前类内部可见 | 封装属性、隐藏实现细节 |
default | 同一包内可见 | 包内共享的工具方法或属性 |
protected | 同一包内或不同包的子类可见(需通过继承) | 子类继承或扩展父类功能 |
public | 全局可见 | 对外暴露的API方法或常量 |
3、static
关键字的四大应用场景
3.1 静态变量
- 特点:类级别共享,所有实例共用同一内存
- 示例:
static int count = 0;
3.2 静态方法
- 特点:无需实例即可调用(如
Math.random()
),不可访问非静态成员 - 示例:
public static void print() { ... }
3.3 静态代码块
static {
}
3.4 静态内部类
class Outer {
static class Inner { ... }
}
4、字符串三兄弟对比
类型 | 可变性 | 线程安全 | 性能特点 | 适用场景 |
---|
String | ❌ | ✅ | 频繁操作产生大量新对象 | 不频繁修改的字符串 |
StringBuilder | ✅ | ❌ | 单线程下高效(非同步) | 单线程字符串拼接 |
StringBuffer | ✅ | ✅ | 多线程安全(同步锁) | 多线程环境下的字符串操作 |
5、集合框架核心解析
5.1 List接口(有序、可重复、索引访问)
实现类 | 数据结构 | 线程安全 | 性能特点 |
---|
ArrayList | 动态数组 | ❌ | 查询快(O(1)),增删慢 |
LinkedList | 双向链表 | ❌ | 增删快(O(1)),查询慢 |
Vector | 动态数组 | ✅(同步) | 线程安全但性能较低 |
5.2 Set接口(无序、唯一)
实现类 | 数据结构 | 排序规则 | 允许null |
---|
HashSet | 哈希表 | 无顺序 | ✅ |
LinkedHashSet | 链表+哈希表 | 插入顺序 | ✅ |
TreeSet | 红黑树 | 自然/比较器排序 | ❌ |
5.3 Map接口(键值对)
实现类 | 数据结构 | 线程安全 | 键特性 |
---|
HashMap | 数组+链表/红黑树 | ❌ | 允许一个null键 |
LinkedHashMap | 链表+哈希表 | ❌ | 保留插入/访问顺序 |
TreeMap | 红黑树 | ❌ | 键按自然/比较器排序 |
Hashtable | 哈希表 | ✅(同步) | 不允许null键/值 |
6、重载(Overload)与重写(Override)对比
特性 | 重载 | 重写 |
---|
作用域 | 同一类中 | 父子类之间 |
参数列表 | 必须不同(类型/数量/顺序) | 必须完全相同 |
返回类型 | 可自由变化 | 必须相同或为子类(协变返回) |
访问权限 | 无限制 | 子类方法不能更严格 |
异常声明 | 无限制 | 子类不能声明更宽泛的异常 |
7、Switch穿透现象
- 原理:
case
分支未写break
时,会继续执行后续分支代码 - 示例:
switch (num) {
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
}
也是到了必须赶紧补博客的时候了deepseek好好用啊把我写的丑丑的word变得清晰多了