阶段一:Java 语言基础 —— 核心知识点总纲
本阶段涵盖:Java 入门与数据类型、流程控制与运算符、分支循环与数组、数组进阶与排序算法、方法与 Random
细分文档:按日细分/20260713-笔记.md ~ 按日细分/20260717-笔记.md
学生需要重点理解、背诵、掌握的理论核心知识点。
一、Java 入门与数据类型(对应 07-13)
1. Java 文件结构与注释
.java 源文件 = Java 代码 + 注释(注释不参与编译运行)
- 三种注释:单行
//、多行 /* */、文档 /** */(生成 API 文档)
2. 基本数据类型(4 类 8 种,必背)
| 类型 |
位数 |
字节 |
范围 |
| byte |
8 |
1 |
-2⁷ ~ 2⁷-1 |
| short |
16 |
2 |
-2¹⁵ ~ 2¹⁵-1 |
| int |
32 |
4 |
-2³¹ ~ 2³¹-1 |
| long |
64 |
8 |
-2⁶³ ~ 2⁶³-1 |
| float |
32 |
4 |
±3.4×10³⁸ |
| double |
64 |
8 |
±1.8×10³⁰⁸ |
| char |
16 |
2 |
0~65535(Unicode) |
| boolean |
1 |
1 |
true/false |
- 整数默认
int、小数默认 double;long 加 L、float 加 F
- 存储单位:1B = 8bit;1KB=1024B;1MB=1024KB;1GB=1024MB;1TB=1024GB
3. 基本类型 vs 引用类型(四大区别必背)
| 维度 |
基本类型 |
引用类型 |
| 存什么 |
直接存"值" |
存空间地址值 |
| 默认值 |
0 / 0.0 / false |
null |
| 赋值 |
复制值,独立 |
复制地址,可能共享 |
| 比较 |
比较值 |
比较地址 |
⚠️ String 不是关键字,是引用类型(类),大驼峰命名。
4. 类型转换(必背方向)
- 自动转换:
byte → short → int → long → float → double
- 强制转换:
(目标类型) 变量;可能丢精度((int)3.94 = 3)、可能溢出((byte)128 = -128)
- 表达式提升:byte/short/char 参与运算自动提升为 int
- 整数除法截断:
10/3 = 3(不四舍五入)
- char 本质是数值:
'A' + 6 = 71;char c6 = 97; → 'a'
5. 编码表与 var
- ASCII(1字节)/ GBK(中文)/ Unicode(2字节)/ UTF-8(变长,互联网常用)
- var(JDK10+):编译时语法糖,只在局部变量用,Java 仍是强类型语言
二、流程控制与运算符(对应 07-14)
1. 程序三大结构
顺序结构、分支结构(if-else)、循环结构
2. 算术/赋值/比较运算符要点
- 整数除法截断;0 不能做除数(整数抛 ArithmeticException,浮点得 Infinity/NaN)
- 取模符号与被除数一致:
-10 % 3 = -1
- 复合赋值隐含强转:
a += 6 可,a = a + 6 报错
- 浮点精度陷阱:
0.1 + 0.2 == 0.3 为 false,用 printf 或误差范围比较
3. 逻辑运算符(必背真值表)
| 运算符 |
名称 |
短路特性 |
& |
与 |
无 |
\| |
或 |
无 |
! |
非 |
单目 |
&& |
短路与 |
左边 false 右边不执行 |
\|\| |
短路或 |
左边 true 右边不执行 |
^ |
异或 |
相同 false、不同 true |
4. 位运算符(操作整型二进制位)
| 运算符 |
规律 |
& / \| / ^ / ~ |
按位与/或/异或/取反 |
<< |
左移,×2ⁿ(低位补0) |
>> |
右移,÷2ⁿ(高位补符号位) |
>>> |
无符号右移,高位补0,负数变大正数 |
5. 三目运算符与优先级
布尔 ? 表达式1 : 表达式2;简单二选一赋值用三目,复杂用 if-else
- 优先级口诀:括号最高 → 单目 → 乘除 → 加减 → 移位 → 比较 → 相等 → 位逻辑 → 短路逻辑 → 三目 → 赋值最低
三、分支循环与数组(对应 07-15)
1. switch 分支
if 范围匹配,switch 具体值匹配
- 传统:
case 值: + break;(不写 break 会穿透)
- 增强 switch(JDK17+):
case 值 -> 自带 break、多值匹配 case "1","2" ->、switch 表达式必须有 default
2. 三种循环对比(必背)
| 循环 |
判断时机 |
最少执行次数 |
| for |
先判断后执行 |
0 |
| while |
先判断后执行 |
0 |
| do...while |
先执行后判断 |
1 |
3. 循环控制(必背)
break:结束整个循环(循环外继续)
continue:结束本轮循环(进入下一轮)
return:结束整个方法(循环外也不执行)
4. 数组(引用类型)
- 特点:连续存储、索引访问、固定长度、同类型、索引从 0 开始
- 动态初始化
new int[10](程序员定长度,默认值);静态初始化 {1,3,5}(程序员赋值)
- 默认值:int→0、double→0.0、boolean→false、引用→null
- 遍历:
for (int i = 0; i < arr.length; i++)
- ⚠️ 越界抛
ArrayIndexOutOfBoundsException
5. 经典算法
闰年、三数最大值(嵌套三目)、水仙花数(取位:/100、/10%10、%10)、数字加密(取位→加5→%10→互换)、变量交换(加减法/异或法)
四、数组进阶与排序算法(对应 07-16)
1. 多维数组与 foreach
- 二维数组 = 数组的数组(存一维数组引用);遍历两层循环(外层
arr.length、内层 arr[i].length)
- foreach:
for (类型 变量 : 数组),只能遍历全部,无法获取索引
2. Arrays 工具类(必背)
sort()、toString()、copyOf()、copyOfRange(arr, from, to)、binarySearch()(必须先排序)
3. 三种排序算法(必会手写,必背对比)
| 特性 |
冒泡 |
选择 |
插入 |
| 思想 |
相邻比较大的后冒 |
每轮选最小交换 |
插入已排序区正确位置 |
| 每轮交换 |
多次 |
最多1次 |
多次(后移) |
| 最好复杂度 |
O(n)优化版 |
O(n²) |
O(n) |
| 稳定性 |
✅ |
❌ |
✅ |
| 实用性 |
低 |
中 |
高 |
- 冒泡:外层 n-1 轮,内层
arr.length-1-i;布尔标记优化提前结束
- 选择:
minIndex 记录最小索引,minIndex != i 才交换
- 插入:
current = arr[i],从后往前找位置,大元素后移,arr[j+1] = current
4. Scanner 键盘输入(必会)
- 四步骤:导包 →
new Scanner(System.in) → 调用方法 → close()
nextInt()/nextDouble()/next()/nextLine()/nextBoolean()/next().charAt(0)
- 陷阱:
nextInt() 后 nextLine() 读到空串(换行符残留)→ 先调一次 nextLine() 吃掉换行
next() 以空格/换行结束,nextLine() 仅以换行结束
五、方法与 Random(对应 07-17)
1. 方法四种声明方式(必背)
| 类型 |
格式 |
场景 |
| 无参无返回值 |
void 方法名() |
输出固定内容 |
| 有参无返回值 |
void 方法名(参数) |
执行操作并输出 |
| 有参有返回值 |
类型 方法名(参数) |
计算并返回 |
| 无参有返回值 |
类型 方法名() |
获取常量/随机数 |
- 无返回值必须
void 占位;有返回值用 return
- 方法中可调用方法(复用):
rotundityArea() 内部调用 getPI()
2. 数组作为方法参数
public static void bubbleSort(int[] arr) { }
bubbleSort(myScore); // 直接传数组名
3. Random 随机数
Random ran = new Random();
ran.nextInt(); // 任何 int
ran.nextInt(100); // 0~99
ran.nextInt(6) + 1; // 1~6(偏移)
对比 Math.random():double (0.0~1.0),需手动运算范围。
本阶段必须背诵的核心口诀
- 整数默认 int,小数默认 double
- 自动转换方向:byte → short → int → long → float → double
- 整数除法砍小数、取模符号随被除数
- 短路与短路或:&& 左 false 右不跑、|| 左 true 右不跑
- 左移×2、右移÷2、无符号右移补0
- do...while 至少执行一次
- break 结束整个循环、continue 结束本轮、return 结束方法
- 冒泡稳定、选择不稳定、插入最实用
- Scanner 陷阱:nextInt 后 nextLine 需先吃换行
- 方法的四象限:有参/无参 × 有返回值/无返回值