本系列可作为JAVA学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。
点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!
本文篇幅较长,建议先收藏再食用!
系列文章目录
JAVA学习 DAY2 java程序运行、注意事项、转义字符
JAVA学习 DAY5 变量&数据类型 [万字长文!一篇搞定!]
JAVA学习 DAY7 程序逻辑控制【万字长文!一篇搞定!】
JAVA学习 DAY11 类和对象_续1【万字长文!一篇搞定!】
JAVA学习 DAY12 继承和多态【万字长文!一篇搞定!】
JAVA学习 DAY13 抽象类和接口【万字长文!一篇搞定!】
深度剖析 Java 图书管理系统设计与实现:类、接口与对象的实战应用
拓展文章
Java避坑指南:千万别在构造方法中调用重写的方法!(附代码案例+执行流程全解析)
深入剖析 Java 中的深拷贝与浅拷贝:原理、实现与最佳实践
目录
前言
小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!
Java 作为一门跨平台、面向对象的编程语言,应用场景广泛,从基础语法到实战项目的学习路径清晰且连贯。本文将对 2 Java 基础相关内容进行简单概括,覆盖语言基础、核心特性、工具类及实战项目,帮助快速梳理 Java 基础体系。
一、Java 语言入门与环境搭建
1. 初识 Java
核心围绕 Java 语言的基础认知展开,包括 Java 的定义、JavaSE 与 JavaEE 的区别(JavaSE 是基础平台,JavaEE 面向企业级应用)、核心应用领域(企业级系统、Web 开发、Android、大数据等)、发展简史(源自 1991 年 “绿色计划”,1995 年正式发布)及 11 大核心特性(简单性、面向对象、分布式等),同时介绍了 JDK 的安装与环境配置。
2. 第一个 Java 程序与运行机制
以 HelloWorld 程序为切入点,讲解 Java 程序的核心结构(源文件、类、方法),运行流程(先通过 javac 编译为.class 字节码文件,再由 JVM 解释执行),并明确 JDK、JRE、JVM 的关系(JDK 包含 JRE,JRE 包含 JVM),同时列出入门常见错误(文件名与类名不一致、main 方法拼写错误等)。
二、Java 基础语法核心
3. 注释、标识符与关键字
- 注释:分为单行注释(//)、多行注释(/* /)、文档注释(/* */),文档注释可通过 javadoc 工具生成说明文档。
- 标识符:用户自定义名称(类名、方法名等),需遵循 “字母、数字、下划线、$” 组成,不能以数字开头、不与关键字冲突的规则,同时有命名规范(类名大驼峰、方法名小驼峰等)。
- 关键字:Java 预先定义的保留字(如 public、class、static 等),按功能分为访问权限修饰符、类 / 方法修饰符等类别,用户不能用于自定义标识符。
4. 数据类型与变量
- 字面常量:固定不变的值,分为字符串常量、整型常量、浮点数常量等 6 类。
- 数据类型:基本数据类型(四类八种:byte、short、int、long、float、double、char、boolean)和引用数据类型,明确各基本类型的内存占用与取值范围。
- 变量:存储可变数据的容器,讲解定义语法、各类型变量(整型、浮点型、字符型、布尔型)的使用规则,以及类型转换(自动类型转换、强制类型转换)和类型提升的规则。
5. 运算符
涵盖 Java 中所有常用运算符:
- 算术运算符:四则运算(+、-、*、/、%)、增量运算符(+=、-= 等)、自增 / 自减运算符(++、--),明确整数除法、取模运算的规则。
- 关系运算符:==、!=、<、> 等,结果为 boolean 类型,需区分 “==” 与 “=” 的区别。
- 逻辑运算符:&&(短路与)、||(短路或)、!(非),强调短路求值特性。
- 位运算符:&、|、~、^,直接操作二进制位,适用于底层开发。
- 移位运算符:<<(左移)、>>(右移)、>>>(无符号右移),可优化乘除 2 的 n 次方运算。
- 条件运算符:唯一三目运算符(表达式 1? 表达式 2: 表达式 3),简化条件判断。
6. 程序逻辑控制
- 顺序结构:按代码书写顺序逐行执行,是基础结构。
- 分支结构:if 语句(单分支、双分支、多分支)和 switch 语句,switch 适用于多值匹配,需注意 case 常量唯一、break 不可省略等规则。
- 循环结构:while 循环(循环次数不确定)、for 循环(循环次数确定)、do-while 循环(至少执行一次),配合 break(终止循环)和 continue(跳过当前循环)控制流程。
- 综合应用:判断素数、打印水仙花数等经典案例。
7. 输入输出
- 输出:System.out.println(带换行)、System.out.print(不带换行)、System.out.printf(格式化输出),支持多种占位符(% d、% f、% s 等)。
- 输入:使用 Scanner 类读取键盘输入,支持字符串、整数、浮点数等类型,讲解多组输入处理及常见问题(如先读整数后读字符串的换行符问题)。
- 实战:猜数字游戏,综合输入输出、循环、条件判断功能。
8. 方法的使用
- 方法定义与意义:封装特定功能的代码片段,实现模块化、复用性,定义语法包含修饰符、返回值类型、方法名、参数列表、方法体。
- 方法调用:需通过 “方法名 + 参数列表” 调用,有返回值的方法需接收返回值。
- 实参与形参:Java 为值传递,形参是实参的拷贝,修改形参不影响实参。
- 方法重载:同一类中方法名相同、参数列表不同(个数、类型、顺序),与返回值无关。
- 递归:方法调用自身,需满足递归出口和递推公式,示例包括求阶乘、斐波那契数列等。
9. Java 调试案例讲解
介绍调试的概念与常见方式,重点讲解 IDEA 调试工具的使用:打断点、启动调试、逐过程(F8)、逐语句(F7)、强制步入、跳出(Shift+F8)等操作,以及条件断点、查看调用堆栈等实用功能。
10. 数组的定义与使用
- 数组概念:存储多个相同类型元素的连续内存空间,用于批量存储数据。
- 数组创建与初始化:动态初始化(指定长度)和静态初始化(指定元素),明确默认值规则。
- 数组使用:通过下标访问元素(注意不越界),遍历方式(for 循环、for-each)。
- 数组是引用类型:讲解 JVM 内存分布(堆、虚拟机栈等),引用变量存储对象地址。
- 数组应用:作为方法参数 / 返回值、数组拷贝、顺序查找、二分查找、冒泡排序、数组逆序,以及二维数组(规则与不规则)的使用。
三、面向对象核心特性
11. 类和对象(一)
- 面向对象认知:Java 是纯面向对象语言,一切皆对象,通过对象交互完成功能,对比面向过程的差异。
- 类的定义:用 class 关键字,包含属性(成员变量)和方法(成员方法)。
- 对象实例化:通过 new 关键字创建对象,使用 “对象。属性 / 方法” 访问成员。
- this 关键字:指向当前对象,解决形参与成员变量同名问题,访问成员变量和方法。
- 对象初始化:默认初始化(成员变量有默认值)、就地初始化、构造方法初始化(与类名相同,无返回值,支持重载,用户未定义时编译器生成默认无参构造)。
12. 类和对象(二)
- 包:组织类的方式,避免类名冲突,讲解导入包(import)、自定义包(package 语句)、常见系统包(java.lang、java.util 等)。
- 封装:面向对象三大特性之一,通过 private 修饰成员,提供 public 的 get/set 方法访问,降低耦合性、提高安全性。
- static 关键字:修饰成员变量(类变量,所有对象共享)和成员方法(类方法,不能访问非静态成员),静态代码块用于初始化静态成员。
- 代码块:普通代码块(方法内)、构造代码块(类内,初始化实例成员)、静态代码块(类内,初始化静态成员,仅执行一次)。
13. 继承
- 继承概念:通过 extends 关键字,子类继承父类的成员,实现代码复用,解决共性抽取问题。
- 父类成员访问:子类优先访问自身成员,无则访问父类,同名时用 super 关键字访问父类成员。
- 子类构造方法:必须先调用父类构造(默认 super () 或显式 super (参数)),且为构造方法第一条语句。
- 访问限定符:protected 关键字,允许同一包或不同包子类访问,配合 private、default、public 实现封装。
- 继承方式:支持单继承、多层继承,不支持多继承,final 关键字可修饰类(不可继承)、方法(不可重写)、变量(常量)。
- 组合:与继承并列的代码复用方式,体现 “has-a” 关系,优先于继承使用。
14. 多态
- 多态实现条件:继承体系、子类重写父类方法、父类引用指向子类对象。
- 方法重写:子类重写父类非静态、非 private、非 final 方法,方法原型(返回值、方法名、参数列表)一致,访问权限不低于父类。
- 向上转型与向下转型:向上转型(子类对象赋值给父类引用,简化代码),向下转型(需用 instanceof 判断,避免类型转换异常)。
- 多态优势:降低圈复杂度、提高可扩展性,避免大量 if-else。
四、常用类与异常处理
15. 字符串 - String 类
- String 类特性:不可变对象,内部存储在字节数组中,字符串常量池用于复用字符串。
- 常用方法:字符串比较(equals、compareTo)、查找(charAt、indexOf)、转换(数值与字符串互转、大小写转换)、替换、拆分、截取、去除空格等。
- StringBuffer 与 StringBuilder:可变字符串,StringBuffer 线程安全,StringBuilder 效率高,适用于频繁修改字符串的场景。
16. 异常
- 异常概念与体系:异常是程序运行时的不正常状态,顶层类为 Throwable,分为 Error(JVM 无法解决的严重问题)和 Exception(可处理的异常)。
- 异常分类:编译时异常(受检查异常)和运行时异常(非受检查异常)。
- 异常处理:throw(手动抛出异常)、throws(声明方法可能抛出的异常)、try-catch(捕获并处理异常)、finally(无论是否异常都执行,用于资源清理)。
- 自定义异常:继承 Exception 或 RuntimeException,用于业务相关异常场景。
17. 常用工具类介绍
- 日期相关类:Date 类(早期日期类,部分方法过时)、LocalDateTime 类(Java8 引入,支持日期创建、获取年月日时分秒、日期运算、格式化等)。
- BigDecimal 类:处理高精度小数运算,避免 double 精度丢失,支持加减乘除运算,除法需指定精度和舍入模式。
五、实战项目:图书系统
18. 图书系统项目(一):前置知识
- 设计模式:单例模式(饿汉式、懒汉式,确保类只有一个实例)、工厂模式(简单工厂、工厂方法,解耦对象创建与使用)、代理模式(静态代理,控制对象访问,如权限检查)。
- jar 包使用:介绍 jar 包的概念、作用,以及项目中引入 jar 包的步骤。
19. 图书系统项目(二):模块划分与用户模块
- 模块划分:分为用户模块、书籍模块、工具模块、常量模块,LibrarySystem 为程序入口。
- 用户模块:抽象 User 类(包含姓名、ID、角色属性,抽象 display 方法),AdminUser(管理员)和 NormalUser(普通用户)子类,实现各自操作菜单,引入工厂模式创建用户对象,代理模式控制权限。
20. 图书系统项目(三):书籍模块
- Book 类:定义书籍属性(书 ID、书名、作者、类别等),实现 toJSON 方法(序列化为字符串)、Comparable 接口(用于排序)。
- Library 类:管理书籍数据,实现数据持久化(通过文件存储),包含加载文件数据到内存、将内存数据写入文件的功能。
- AnalyzingBook 类:解析书籍对象与 JSON 字符串的相互转换。
21. 图书系统项目(四):业务逻辑框架完善
- ProxyUser 类:完善业务逻辑分发,根据用户角色(管理员 / 普通用户)和操作选择,调用对应方法。
- AdminUser 类:完善管理员业务方法(上架、修改、下架图书等)的数据准备工作。
- NormalUser 类:设计借阅信息存储(PairOfUidAndBookId 类),完善借阅、归还图书的数据准备。
- 单例模式:ScannerSingleton 和 LibrarySingleton,确保 Scanner 和 Library 类全局唯一实例。
22. 图书系统项目(五):管理员业务实现
详细实现管理员核心业务:添加图书(检查权限、准备数据、调用 Library 方法存储)、更新图书(根据 ID 查找并修改)、下架图书(覆盖删除)、查看借阅次数、统计热门图书、按类别 / 作者统计图书、移除上架超一年的图书等。
23. 图书系统项目(六):普通用户业务与共用方法实现
- 普通用户业务:借阅图书(检查书籍是否可借、记录借阅信息)、归还图书(更新书籍状态、删除借阅记录)、查看个人借阅情况。
- 共用方法:查找图书、显示所有图书、退出系统,供管理员和普通用户共用。

总结
以上就是今天要讲的内容,本文简单记录了JAVA学习笔记,大家根据注释理解,您的点赞关注收藏就是对小编最大的鼓励!
&spm=1001.2101.3001.5002&articleId=157586396&d=1&t=3&u=ad61e0fe77e1448a835b7efc7053ea91)
1535

被折叠的 条评论
为什么被折叠?



