3.6 KiB
3.6 KiB
这份笔记为你梳理了 Java 开发中最核心的语法和类型体系。你可以把它当作一张“速查表”,重点标注了和 C/C++ 的差异点。
1. Java 数据类型大地图
Java 的类型系统分为两大类:基本类型和引用类型。
① 基本类型 (Primitive Types)
Java 的基本类型长度是固定的,不随操作系统位数改变(这是跨平台的保证)。
| 类型 | 大小 | 默认值 | 包装类 (用于集合) | 备注 |
|---|---|---|---|---|
| byte | 1 byte | 0 | Byte | 很少用,多用于二进制流 |
| short | 2 bytes | 0 | Short | - |
| int | 4 bytes | 0 | Integer | 最常用 |
| long | 8 bytes | 0L | Long | 赋值需加 L 后缀 |
| float | 4 bytes | 0.0f | Float | 赋值需加 f 后缀 |
| double | 8 bytes | 0.0 | Double | 常用浮点数 |
| char | 2 bytes | '\u0000' | Character | UTF-16 编码,存一个汉字没问题 |
| boolean | 1 bit | false | Boolean | 只有 true/false,不能用 0/1 |
② 引用类型 (Reference Types)
除了上面 8 种,剩下的全是引用类型(类似于 C 的指针,但你不能直接操作内存地址)。
- 类 (Class):如
String,User - 接口 (Interface):如
List - 数组 (Array):如
int[],User[]
2. 核心语法速记
① 变量与常量
int age = 18; // 变量
final double PI = 3.1415; // 常量 (类似 C++ 的 const)
② 运算符 (与 C 几乎一致)
- 算术:
+,-,*,/,%,++,-- - 关系:
==,!=,>,<,>=,<= - 逻辑:
&&(短路与),||(短路或),! - 特殊:
+可以用于字符串拼接,如"Age: " + age。
③ 条件与循环
// 条件
if (score > 60) { ... } else { ... }
// 循环 (和 C 没区别)
for (int i = 0; i < 10; i++) { ... }
while (condition) { ... }
// 增强型 for (专门遍历集合和数组)
for (String name : nameList) {
System.out.println(name);
}
3. 面向对象三要素 (封装、继承、多态)
- 封装:使用
private隐藏属性,通过public的getter/setter方法暴露。 - 继承:使用
extends关键字。Java 是单继承,一个儿子只能有一个亲爹。 - 多态:父类引用指向子类对象
List list = new ArrayList();(这是后端开发的灵魂)。
4. Java 集合框架 (STL 对应版)
在 java.util 包下,这是做服务器开发最常用的工具:
| 功能 | Java 接口 | 常用实现类 | C++ 对应 |
|---|---|---|---|
| 动态数组 | List |
ArrayList |
std::vector |
| 链表 | List |
LinkedList |
std::list |
| 哈希表 | Map |
HashMap |
std::unordered_map |
| 排序映射 | Map |
TreeMap |
std::map |
| 唯一集合 | Set |
HashSet |
std::unordered_set |
5. 两个“必须知道”的避坑指南
🔴 避坑 1:字符串比较
- 错误:
if (str == "hello")(这是在比较内存地址) - 正确:
if (str.equals("hello"))(这是在比较内容)
🔴 避坑 2:自动装箱与拆箱
Java 集合不能直接存基本类型(如 int),必须存包装类(Integer)。
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // 自动装箱:把 int 变成 Integer 对象
int val = list.get(0); // 自动拆箱:把 Integer 变成 int
这份笔记你可以先存着。如果你想练习,我可以给你一个涉及到“继承和多态”的小案例,这对于理解 Spring 等后端框架非常有帮助。要试试吗?