发布时间:2026/8/29 5:11:55
第22章 Java 基础技术回顾:21 章精华速览 第22章 Java 基础技术回顾21 章精华速览从Hello World到学生信息管理系统Java 基础入门系列 21 章已经全部讲完。这一章不教新知识而是把 21 章的内容串成一条线做一次系统回顾。把这一章的每一条都看懂你的 Java 基础就算真正过关了。本系列按 JDK 8、JDK 11、JDK 17 三个 LTS 版本讲解三个版本的基础语法完全一致只有文中特别标注如 switch 箭头写法、record、sealed、文本块的特性需要 JDK 17。一、语法地基从环境搭建到方法第 1~8 章1. 开发环境与第一个程序Java 跨平台的秘密是JVM一次编译到处运行开发用JDK含编译器 javac运行只需要JRE三步走写代码 →javac编译 →java运行程序结构固定类名与文件名一致入口是public static void main(String[] args)publicclassHello{publicstaticvoidmain(String[]args){System.out.println(Hello Java);// println 换行、print 不换行、printf 格式化}}2. 变量与数据类型8 种基本类型byte、short、int、long、float、double、char、boolean整数默认int小数默认doublelong加 Lfloat加 F基本类型存值引用类型存地址——这是理解 Java 一切内存话题的起点小转大自动转换大转小强制转换可能丢精度金额计算用BigDecimal包装类比较内容用equals不用3. 运算符整数除法取整、%取余判断奇偶、取某位数字很好用比较基本类型的值引用类型比较内容一律用equals、||有短路特性判空场景非常好用4. 流程控制if适合范围判断switch适合固定值判断经典 switch 别忘了breakJDK 17 的-写法自动 breakfor次数确定、while次数不确定、do-while至少执行一次break结束循环、continue跳过本次、return结束方法循环三件事想清楚变量初始化、条件边界还是、变量更新避免死循环5. 数组长度固定、下标从 0 开始、越界抛ArrayIndexOutOfBoundsException只读遍历用 foreach需要下标或改元素用普通 forArrays工具类sort、binarySearch、toString、copyOf二维数组是数组的数组每行可独立、可不等长6. 方法定义、重载与递归方法封装重复逻辑定义一次调用多次Java 是值传递形参永远拿到实参的拷贝引用类型通过拷贝的地址可以改对象内容重载 同名不同参数列表与返回值无关精确匹配优先可变参数本质是数组必须放参数列表最后递归必须有出口警惕栈溢出能用循环改写就优先用循环二、面向对象四大核心第 9~13 章7. 类与对象类是模板对象是实例new创建对象引用变量存堆中对象的地址属性描述状态方法描述行为成员变量有默认值局部变量必须初始化构造器与类同名、无返回值、new时自动调用this指当前对象static属于类、全类共享一份静态方法不能直接访问实例成员对象数组要先 new 数组再逐个 new 元素否则空指针8. 封装与访问控制封装 private属性 公开 getter/setter方法内校验数据合法性访问级别从宽到窄public→protected→ 默认 →private最小暴露JavaBean public 类 private 属性 getter/setter 无参构造器是框架协作的基础属性一律 private读写走 getter/setter——封装的核心习惯9. 继承extends复用父类非私有成员单继承、可多层继承一切类继承自Object重写Override签名一致、权限不缩水建议加Overridesuper访问父类成员/构造器构造器先父后子super()必须第一行equals与hashCode要成对重写10. 多态多态 父类/接口引用指向子类对象 方法重写运行时看实际对象调方法动态绑定编译期看引用类型向上转型自动安全向下转型必须先instanceof判断否则抛ClassCastException一句话多态是实例方法的特权变量和静态方法不参与动态绑定11. 抽象类与接口抽象方法只有声明没有实现含抽象方法的类必须声明为抽象类不能new接口是纯规范方法默认public abstract变量默认public static final一个类可实现多个接口抽象类描述是什么接口描述能做什么优先用接口JDK 8 起接口支持default和static方法JDK 17 可用sealed限定继承名单模板方法模式抽象类定骨架final 模板方法 钩子方法子类填细节三、常用类与集合第 14~18 章12. String 与 StringBuilder字面量存常量池可复用new一定新对象内容比较用equalsString 不可变 → 线程安全、可缓存哈希但拼接慢循环拼接用StringBuilder单线程或StringBuffer多线程常量字符串放equals左边防空指针判空先判 nullJDK 11 新增isBlank、strip、repeat、lines等便捷方法13. 异常处理Throwable之下分Error不可处理和Exception可处理运行时异常是代码 bug不强制处理检查型异常必须 try-catch 或 throwsfinally收尾先于 return 执行但别在 finally 里 returntry-with-resources 自动关闭资源throw主动抛出throws声明抛出业务错误可自定义异常继承 RuntimeException最佳实践捕获具体异常、不空 catch、记录日志、资源必关14. 集合框架List 与 SetList 有序可重复ArrayList查询快 /LinkedList增删快Set 不可重复HashSet无序 /LinkedHashSet保序 /TreeSet排序自定义类进 HashSet 必须重写hashCodeequals遍历集合别在增强 for 中修改删除用Iterator.remove()或倒序 forArrayList 自动扩容默认容量 101.5 倍增长JDK 11/17 的List.of不可变15. 集合框架Map增删改查put/get/remove/containsKey遍历推荐entrySet或forEach避免 keySet get 二次查询HashMap 底层是数组链表红黑树查询 O(1)put/get 靠 hash 定位、equals 找键自定义类当 key 必须重写 hashCode equals且 key 不要被修改多线程用ConcurrentHashMapJDK 11/17 的Map.of不可变、不能 null16. 泛型入门泛型限定集合/类的类型编译期检查免强转泛型类class BoxT、泛型方法T 返回类型 方法名、泛型接口? extends T上限偏读? super T下限偏写PECS 记读写方向泛型运行期擦除不能new T()、不能建泛型数组、不能instanceof T基本类型用包装类static 成员不能用类泛型要用泛型方法四、IO 与多线程第 19~20 章17. IO 流流是数据传输通道输入/输出相对程序而言字节流管一切文件字符流管文本缓冲流内部有大缓冲区批量读写性能高字符流要 close或 flush才会真正落盘复制文件缓冲数组 循环 read/write注意write(buffer, 0, len)只写有效长度编码统一 UTF-8大文件别用readAllBytes一次性读进内存用 try-with-resources 自动关闭资源18. 多线程入门进程是资源分配单位线程是 CPU 调度单位线程共享进程内存创建线程继承 Thread / 实现 Runnable推荐/ LambdaJDK 8start()开新线程且只能调一次run()只是普通方法调用生命周期新建 → 就绪 → 运行 → 阻塞/等待 → 死亡多线程共享数据有安全风险count不是原子操作用synchronized加锁或用原子类/并发容器sleep不释放锁wait释放锁必须在 synchronized 内靠 notify 唤醒五、综合实战第 21 章第 21 章用学生信息管理系统把前面所有知识串起来类设计Student封装属性getter/setter、StudentService增删改查逻辑、主程序菜单交互集合用 ArrayList 存学生数据IO文件读写实现数据持久化保存到文件、启动时加载流程控制while 菜单循环 switch 功能分支易错点nextInt后要补nextLine()吃掉换行符数据变更后及时持久化能不看答案独立写出这个项目说明 Java 基础已经过关。六、核心知识图谱文字版Java 基础 ├── 语法地基变量/运算符/流程控制/数组/方法 ├── 面向对象类与对象 → 封装 → 继承 → 多态 → 抽象类与接口 ├── 常用 APIString / 异常 / 集合(List、Set、Map) / 泛型 ├── 进阶基础IO 流 / 多线程 └── 综合实战学生信息管理系统贯穿始终的一条主线“基本类型存值、引用类型存地址”它解释了 equals vs 、深浅拷贝、集合去重hashCodeequals、Map 查找原理、值传递等一大片问题。七、高频易错点清单比较字符串内容 → 错用equals数组越界、new对象数组后忘了 new 元素 → 空指针重载与重写混淆重载换参数、重写换实现switch 忘写 break旧写法在增强 for 里删除集合元素 → 用 Iterator.remove()自定义类进 HashSet/HashMap 不重写 hashCodeequalsfinally 里 return 吞掉异常/返回值字符流不 close 数据丢失读文件乱码编码不一致count多线程不安全nextInt 后直接 nextLine 读到空串八、下一步Java 高级用法系列基础篇到此收官。接下来是《Java 高级用法》系列继续深入原理和为什么深入 String常量池、intern 与不可变集合框架深度HashMap 源码与并发集合IO 流深入与序列化网络编程Socket 与 HTTP多线程进阶线程池与锁JVM内存与垃圾回收、性能调优JDK 新特性8/11/17 的 Lambda、Stream、var、语法糖反射、注解、泛型深入、设计模式、并发实战……基础打牢进阶不慌。下一站见下一篇Java 高级用法系列 第1章 深入 String常量池、intern 与不可变

相关新闻

2026/8/29 5:11:55

全开源跨境商城系统:多语言与资金流深度重构

简介:这是一套面向跨境电商开发者与独立站创业者的全开源多语言跨境商城系统源码,解决多语种市场拓展、多商户联盟运营及快速部署等核心需求。资源包共2000个文件,涵盖691个PHP后端逻辑文件、450个JS交互脚本、268个PNG图标资源、192个CSS样式…

2026/8/29 5:11:55

遗传算法+神经网络训练智能贪吃蛇:从原理到代码实战

简介:在机器学习领域,神经网络与遗传算法都是经典技术,它们不依赖梯度信息即可优化模型参数。传统神经网络训练多依赖反向传播,而遗传算法通过模拟“优胜劣汰”的进化规律,能有效解决奖励稀疏、延迟反馈的决策问题。本…

2026/8/29 5:11:55

【Openstack部署-2】

Networking 服务之前的修改的配置不要删除配置私有网络控制节点[rootcontroller ~]# vim /etc/neutron/neutron.conf[database] ... connection mysqlpymysql://neutron:NEUTRON_DBPASScontroller/neutron使用你设置的数据库密码替换 NEUTRON_DBPASS[DEFAULT] ... core_plugin…

2026/8/29 5:26:56

C++17 if constexpr与初始化if:编译期与运行时分支的艺术

1. 从两个“if”说起:编译期与运行时的抉择艺术如果你写过一段时间的C,对if语句肯定再熟悉不过了。它就像程序里的交通警察,根据条件决定代码的走向。但C17引入的if constexpr和C17/20中增强的if初始化语句,让这个“警察”拥有了在…

2026/8/29 5:26:56

KMP算法从原理到实战:关键next数组解析与线性匹配优化

这个系列走到第四篇,我挑了三块在面试里出场率极高、又经常被混淆的硬骨头:Manacher算法、BFPRT算法、KMP算法。题目里标了“上”,所以这一篇的主角是KMP——理由是它最基础、最经典,同时也是后两个算法思想的前置。Manacher和BFP…

2026/8/29 5:26:56

阿里Java实习面试全流程复盘:从简历到HR面,附高频考题

金三银四这个时间点,对2021届的实习生来说就是一场硬仗。尤其是阿里这种级别的公司,春招实习面试不只是筛人,更像是一次高强度的技术体检。我把自己当时备战阿里Java后台开发实习的完整经历,包括每一轮的面试题、答题思路、以及踩…

2026/8/29 5:26:56

学习FastAPI,端口的“路由参数”传递

1,路径参数在查询定义路径时传入,再传入给函数中如访问http://127.0.0.1:8000/itme/18# 路径参数 # 定义路由时,直接在路径中编写变量 app.get("/item/{sid}") async def read_item(sid: int):return {"sid":sid}# 如果没…

2026/8/29 5:26:56

D14 | Agent 是什么?ReAct 模式让你看懂所有 Agent 框架

文章目录 D14 | Agent 是什么?ReAct 模式让你看懂所有 Agent 框架 写在前面 一、Agent 的本质 1.1 一个生活类比 1.2 Agent 的 3 个核心组件 1.3 Agent vs LLM vs RAG 二、ReAct 模式:所有 Agent 的母模式 2.1 ReAct 是什么 2.2 ReAct 流程图 2.3 ReAct 的 Prompt 模板 2.4 3…

2026/8/29 5:21:56

ROS2集成海康工业相机:从SDK封装到高性能视觉节点开发

简介:本资源是一份面向ROS2初学者与工业视觉开发者的技术实践指南,聚焦海康HIKROBOT工业相机在ROS2环境下的驱动开发与集成应用。它系统解决了图像采集、参数动态配置、设备状态管理及图像流发布等核心问题,适用于机器人视觉感知、智能质检、…

2026/8/28 16:16:17

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/28 16:16:21

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 16:16:22

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/29 0:01:10

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:01:10

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:01:10

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…