2025年Java基础知识总结难点亮点(超详细整理)
一、Java语言核心
一、数据类型
-
基本数据类型:
- 数值型:
- 整数类型:
byte
(8 位,范围 -128 到 127)、short
(16 位)、int
(32 位)、long
(64 位,声明时在数值后加L
,如long num = 10L;
)。 - 浮点数类型:
float
(32 位,声明时在数值后加f
,如float f = 3.14f;
)、double
(64 位)。 - 字符型:
char
(16 位,用于存储单个字符,如char c = 'a';
)。 - 布尔型:
boolean
(只有true
和false
两个值,用于逻辑判断)。
- 整数类型:
- 数值型:
-
引用数据类型:
- 类:定义对象的模板,如
class Person { String name; int age; }
。 - 接口:包含抽象方法的集合,如
interface Shape { double getArea(); }
。 - 数组:相同数据类型元素的集合,如
int[] arr = {1, 2, 3};
。
- 类:定义对象的模板,如
二、变量和常量
- 变量:用于存储数据,定义时需指定数据类型。例如:
int count = 10;
。 - 常量:值不可改变,使用
final
关键字修饰。例如:final double PI = 3.14159;
。
三、运算符
- 算术运算符:
+
、-
、*
、/
、%
(取余)。例如:int result = 10 + 5;
。 - 赋值运算符:
=
、+=
、-=
、*=
、/=
、%=
等。例如:int num = 5; num += 3;
(等同于num = num + 3;
)。 - 比较运算符:
==
、!=
、>
、<
、>=
、<=
,返回boolean
类型结果。例如:boolean isGreater = 10 > 5;
。 - 逻辑运算符:
&&
(逻辑与)、||
(逻辑或)、!
(逻辑非)。例如:boolean condition = (5 > 3) && (2 < 4);
。 - 位运算符:
&
(按位与)、|
(按位或)、^
(按位异或)、~
(按位取反)、<<
(左移)、>>
(右移)、>>>
(无符号右移)。
四、流程控制语句
- 条件语句:
if-else
语句:根据条件执行不同代码块。例如:
int num = 10;
if (num > 5) {System.out.println("大于5");
} else {System.out.println("小于等于5");
}
switch
语句:根据变量的值选择执行不同的分支。例如:
int day = 1;
switch (day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;default:System.out.println("其他");
}
- 循环语句:
for
循环:适用于已知循环次数的情况。例如:
for (int i = 0; i < 5; i++) {System.out.println(i);
}
while
循环:当条件为true
时持续循环。例如:
int count = 0;
while (count < 5) {System.out.println(count);count++;
}
do-while
循环:先执行一次循环体,再判断条件。例如:
int num = 0;
do {System.out.println(num);num++;
} while (num < 5);
- 跳转语句:
break
语句:用于跳出当前循环或switch
语句。continue
语句:用于跳过当前循环中的剩余代码,继续下一次循环。
五、方法
- 方法定义:包含方法名、参数列表、返回类型和方法体。例如:
public int add(int a, int b) {return a + b;
}
- 方法重载:在同一个类中,多个方法具有相同的方法名,但参数列表不同(参数个数、类型或顺序不同)。例如:
public int add(int a, int b) {return a + b;
}
public double add(double a, double b) {return a + b;
}
六、类和对象
- 类的定义:包含属性(成员变量)和方法。例如:
class Person {String name;int age;public void introduce() {System.out.println("我叫 " + name + ",年龄是 " + age + " 岁。");}
}
- 对象的创建和使用:使用
new
关键字创建对象,并通过对象调用方法和访问属性。例如:
Person person = new Person();
person.name = "Alice";
person.age = 25;
person.introduce();
以上是 Java 语言核心基础语法的主要内容,通过不断练习和实践,可以更深入地掌握这些知识并灵活运用。
2. 面向对象编程
类与对象
- 类:是具有相同属性和行为的一组对象的抽象描述,是创建对象的模板。在 Java 中,使用
class
关键字定义类,类中包含成员变量(用于描述对象的属性)和成员方法(用于描述对象的行为)。例如:
class Dog {String name;int age;public void bark() {System.out.println("汪汪汪!");}
}
- 对象:是类的实例,通过
new
关键字创建。每个对象都有自己独立的内存空间,存储其成员变量的值,并且可以调用类中定义的方法。例如:
Dog myDog = new Dog();
myDog.name = "小白";
myDog.age = 3;
myDog.bark();
封装
- 概念:将类的成员变量和实现细节隐藏起来,只对外提供公共的访问方法,控制对类中数据的访问权限,提高数据的安全性和类的可维护性。
- 实现方式:通过使用访问修饰符(
private
、protected
、public
)来限制成员变量和方法的访问范围。通常将成员变量声明为private
,然后提供public
的getter
和setter
方法来访问和修改这些变量。例如:
class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
继承
- 概念:允许一个类(子类)继承另一个类(父类)的属性和方法,子类可以在父类的基础上进行扩展和修改,实现代码的复用。
- 实现方式:使用
extends
关键字来表示继承关系。例如:
class Animal {public void eat() {System.out.println("动物在吃东西。");}
}class Dog extends Animal {public void bark() {System.out.println("汪汪汪!");}
}
- 方法重写:子类中可以定义与父类中方法签名(方法名、参数列表、返回类型)相同的方法,以覆盖父类中的方法实现。在重写方法时,需要使用
@Override
注解来标识。例如:
class Animal {public void move() {System.out.println("动物在移动。");}
}class Bird extends Animal {@Overridepublic void move() {System.out.println("鸟儿在飞翔。");}
}
多态
- 概念:指同一个方法在不同的对象上调用时,会表现出不同的行为。多态是通过继承和方法重写来实现的。
- 实现方式:包括编译时多态(方法重载)和运行时多态(方法重写)。编译时多态是根据方法的参数列表来确定调用哪个方法;运行时多态是根据对象的实际类型来确定调用哪个重写的方法。例如:
class Shape {public void draw() {System.out.println("绘制图形。");}
}class Circle extends Shape {@Overridepublic void draw() {System.out.println("绘制圆形。");}
}class Rectangle extends Shape {@Overridepublic void draw() {System.out.println("绘制矩形。");}
}public class Main {public static void main(String[] args) {Shape shape1 = new Circle();Shape shape2 = new Rectangle();shape1.draw(); shape2.draw(); }
}
抽象类与接口
- 抽象类:使用
abstract
关键字修饰的类,不能被实例化,只能作为父类被继承。抽象类中可以包含抽象方法(只有方法声明,没有方法体)和非抽象方法。例如:
abstract class AbstractShape {public abstract double getArea();public void display() {System.out.println("这是一个抽象图形。");}
}class Circle extends AbstractShape {private double radius;public Circle(double radius) {this.radius = radius;}@Overridepublic double getArea() {return Math.PI * radius * radius;}
}
- 接口:使用
interface
关键字定义,是一组抽象方法和常量的集合。接口中的方法默认是public abstract
的,常量默认是public static final
的。一个类可以实现多个接口,实现接口的类必须实现接口中所有的抽象方法。例如:
interface Drawable {void draw();
}interface Resizable {void resize(int factor);
}class Rectangle implements Drawable, Resizable {private int width;private int height;@Overridepublic void draw() {System.out.println("绘制矩形。");}@Overridepublic void resize(int factor) {width *= factor;height *= factor;}
}
内部类
- 概念:定义在另一个类内部的类,分为成员内部类、静态内部类、局部内部类和匿名内部类。
- 成员内部类:可以访问外部类的所有成员,包括私有成员。例如:
class Outer {private int outerVar = 10;class Inner {public void printOuterVar() {System.out.println("外部类的变量:" + outerVar);}}
}
- 静态内部类:使用
static
修饰,不能直接访问外部类的非静态成员,只能访问外部类的静态成员。例如:
class Outer {private static int staticVar = 20;static class Inner {public void printStaticVar() {System.out.println("外部类的静态变量:" + staticVar);}}
}
- 局部内部类:定义在方法内部,只能在该方法内使用。例如:
class Outer {public void outerMethod() {class Inner {public void innerMethod() {System.out.println("这是局部内部类的方法。");}}Inner inner = new Inner();inner.innerMethod();}
}
- 匿名内部类:没有类名的内部类,通常用于创建一个只使用一次的类的实例。例如:
interface MyInterface {void doSomething();
}public class Main {public static void main(String[] args) {MyInterface myInterface = new MyInterface() {@Overridepublic void doSomething() {System.out.println("这是匿名内部类实现的方法。");}};myInterface.doSomething();}
}
3. 集合框架
-
List:ArrayList vs LinkedList
-
Set:HashSet vs TreeSet
-
Map:HashMap vs TreeMap vs LinkedHashMap
-
并发集合:ConcurrentHashMap, CopyOnWriteArrayList
4. 异常处理
-
检查异常 vs 非检查异常
-
try-with-resources语法
-
自定义异常实践
5. Java新特性(8-19)
-
Lambda表达式:函数式编程
-
Stream API:集合操作
-
模块系统(Project Jigsaw)
-
模式匹配:instanceof增强
-
虚拟线程(Project Loom):轻量级并发
二、JVM与性能优化
1. JVM内存模型
-
堆(新生代/老年代) vs 栈 vs 方法区(元空间)
-
直接内存使用场景
2. 垃圾回收机制
-
分代收集理论
-
GC算法:Serial、Parallel、CMS、G1、ZGC、Shenandoah
-
GC日志分析与调优
3. JVM参数调优
4. 性能监控工具
-
JDK工具:jps、jstat、jmap、jstack、jcmd
-
可视化工具:VisualVM、JConsole、JMC
-
线上诊断:Arthas、Async-Profiler
三、多线程与并发编程
1. 线程基础
-
线程生命周期
-
创建线程的多种方式
-
线程池(ThreadPoolExecutor参数详解)
2. 并发工具类
-
同步器:CountDownLatch、CyclicBarrier、Semaphore
-
并发集合:ConcurrentHashMap、BlockingQueue
-
原子类:AtomicInteger等
3. 锁机制
-
synchronized优化(偏向锁、轻量级锁、重量级锁)
-
ReentrantLock vs synchronized
-
StampedLock乐观读
4. 并发模式
-
生产者-消费者模式
-
Fork/Join框架
-
CompletableFuture异步编程
四、数据库与持久层
1. SQL基础
-
复杂查询:子查询、连接查询
-
索引原理与优化
-
事务隔离级别
2. MySQL进阶
-
存储引擎:InnoDB vs MyRocks
-
执行计划EXPLAIN分析
-
分库分表策略
3. ORM框架
4. 连接池
-
HikariCP配置与监控
-
Druid高级功能
五、Spring生态
1. Spring Core
-
IOC容器原理
-
AOP实现机制
-
Bean生命周期
2. Spring Boot
-
自动配置原理
-
启动过程分析
-
2025年推荐的配置方式
3. Spring MVC
-
RESTful设计规范
-
全局异常处理
-
参数校验
4. Spring Cloud
-
服务注册:Nacos
-
服务调用:OpenFeign
-
熔断降级:Sentinel
-
网关:Spring Cloud Gateway
-
配置中心:Nacos Config
六、分布式系统
1. 分布式理论
-
CAP理论
-
BASE理论
-
一致性算法:Raft、Paxos
2. 分布式事务
-
XA协议
-
SAGA模式
-
TCC模式
-
Seata框架
3. 分布式缓存
-
Redis数据类型与应用场景
-
缓存穿透/击穿/雪崩解决方案
-
多级缓存架构
4. 消息队列
-
Kafka:高吞吐场景
-
RocketMQ:事务消息
-
Pulsar:多租户支持
七、微服务架构
1. 服务治理
-
服务注册与发现
-
负载均衡策略
-
服务熔断与降级
2. API设计
-
RESTful规范
-
GraphQL实践
-
gRPC性能优化
3. 可观测性
-
日志:ELK Stack
-
指标:Prometheus + Grafana
-
追踪:SkyWalking, Jaeger
4. 服务网格
-
Istio核心功能
-
Envoy代理配置
-
服务间通信安全
八、云原生技术
1. 容器化
-
Docker最佳实践
-
多阶段构建优化
-
镜像安全扫描
2. Kubernetes
-
Pod调度策略
-
Service与Ingress
-
Helm Chart管理
3. Serverless
-
函数计算应用场景
-
冷启动优化
-
状态管理
九、开发工具链
1. 构建工具
-
Maven多模块管理
-
Gradle性能优化
2. 版本控制
-
Git高级操作
-
代码审查流程
3. CI/CD
-
Jenkins Pipeline
-
GitHub Actions
-
ArgoCD GitOps
4. IDE技巧
-
IntelliJ IDEA高效快捷键
-
VS Code远程开发
十、安全防护
1. 常见攻击防护
-
SQL注入
-
XSS/CSRF
-
SSRF防护
2. 认证授权
-
OAuth2.0流程
-
JWT最佳实践
-
RBAC/ABAC模型
3. 数据安全
-
敏感信息加密
-
国密算法应用
-
数据脱敏处理
十一、测试与质量保障
1. 单元测试
-
JUnit 5新特性
-
Mockito深度使用
-
测试覆盖率分析
2. 集成测试
-
Testcontainers数据库测试
-
Spring Boot Test切片测试
3. 压力测试
-
JMeter分布式测试
-
Gatling场景模拟
十二、架构设计原则
1. 设计模式
-
常用模式:策略、工厂、观察者
-
领域驱动设计(DDD)
2. 架构风格
-
整洁架构
-
六边形架构
-
CQRS模式
3. 代码质量
-
SOLID原则
-
代码异味识别
-
重构技巧
十三、前沿技术趋势(2025)
-
AI辅助编程:GitHub Copilot深度集成
-
WebAssembly后端:高性能计算场景
-
量子计算准备:Qiskit基础
-
区块链中间件:智能合约交互
-
元宇宙后端:3D空间数据处理
学习路线建议
-
初级阶段:Java核心 → JVM基础 → MySQL → Spring Boot
-
中级阶段:并发编程 → 分布式原理 → 系统设计 → 云原生
-
高级阶段:架构设计 → 性能优化 → 技术领导力
需要完整版PDF的,请
官住VX粽号:【灰灰聊架构】,回复:049,
勉废零取哦~~~~
提示:2025年技术生态更强调云原生、AI融合和开发者体验,建议在掌握基础的同时,关注GraalVM、Quarkus等新兴技术栈的发展。