这份笔记为你梳理了 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. 核心语法速记 ### ① 变量与常量 ```java int age = 18; // 变量 final double PI = 3.1415; // 常量 (类似 C++ 的 const) ``` ### ② 运算符 (与 C 几乎一致) * 算术:`+`, `-`, `*`, `/`, `%`, `++`, `--` * 关系:`==`, `!=`, `>`, `<`, `>=`, `<=` * 逻辑:`&&` (短路与), `||` (短路或), `!` * **特殊**:`+` 可以用于字符串拼接,如 `"Age: " + age`。 ### ③ 条件与循环 ```java // 条件 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`)。 ```java ArrayList list = new ArrayList<>(); list.add(10); // 自动装箱:把 int 变成 Integer 对象 int val = list.get(0); // 自动拆箱:把 Integer 变成 int ``` --- **这份笔记你可以先存着。如果你想练习,我可以给你一个涉及到“继承和多态”的小案例,这对于理解 Spring 等后端框架非常有帮助。要试试吗?**