当前位置: 首页 > news >正文

2025年Java基础知识总结难点亮点(超详细整理)

一、Java语言核心

一、数据类型

  1. 基本数据类型
    • 数值型
      • 整数类型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 两个值,用于逻辑判断)。
  2. 引用数据类型
    • :定义对象的模板,如 class Person { String name; int age; }
    • 接口:包含抽象方法的集合,如 interface Shape { double getArea(); }
    • 数组:相同数据类型元素的集合,如 int[] arr = {1, 2, 3};

二、变量和常量

  1. 变量:用于存储数据,定义时需指定数据类型。例如:int count = 10;
  2. 常量:值不可改变,使用 final 关键字修饰。例如:final double PI = 3.14159;

三、运算符

  1. 算术运算符+-*/%(取余)。例如:int result = 10 + 5;
  2. 赋值运算符=+=-=*=/=%= 等。例如:int num = 5; num += 3;(等同于 num = num + 3;)。
  3. 比较运算符==!=><>=<=,返回 boolean 类型结果。例如:boolean isGreater = 10 > 5;
  4. 逻辑运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)。例如:boolean condition = (5 > 3) && (2 < 4);
  5. 位运算符&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)、>>>(无符号右移)。

四、流程控制语句

  1. 条件语句
    • 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("其他");
}

  1. 循环语句
    • 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);
  1. 跳转语句
    • break 语句:用于跳出当前循环或 switch 语句。
    • continue 语句:用于跳过当前循环中的剩余代码,继续下一次循环。

五、方法

  1. 方法定义:包含方法名、参数列表、返回类型和方法体。例如:
public int add(int a, int b) {return a + b;
}

  1. 方法重载:在同一个类中,多个方法具有相同的方法名,但参数列表不同(参数个数、类型或顺序不同)。例如:
public int add(int a, int b) {return a + b;
}
public double add(double a, double b) {return a + b;
}

六、类和对象

  1. 类的定义:包含属性(成员变量)和方法。例如:
class Person {String name;int age;public void introduce() {System.out.println("我叫 " + name + ",年龄是 " + age + " 岁。");}
}

  1. 对象的创建和使用:使用 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();
封装
  • 概念:将类的成员变量和实现细节隐藏起来,只对外提供公共的访问方法,控制对类中数据的访问权限,提高数据的安全性和类的可维护性。
  • 实现方式:通过使用访问修饰符(privateprotectedpublic)来限制成员变量和方法的访问范围。通常将成员变量声明为 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)

  1. AI辅助编程:GitHub Copilot深度集成

  2. WebAssembly后端:高性能计算场景

  3. 量子计算准备:Qiskit基础

  4. 区块链中间件:智能合约交互

  5. 元宇宙后端:3D空间数据处理

学习路线建议

  1. 初级阶段:Java核心 → JVM基础 → MySQL → Spring Boot

  2. 中级阶段:并发编程 → 分布式原理 → 系统设计 → 云原生

  3. 高级阶段:架构设计 → 性能优化 → 技术领导力


    需要完整版PDF的,请

    官住VX粽号:【灰灰聊架构】,回复:049,

    勉废零取哦~~~~

提示:2025年技术生态更强调云原生、AI融合和开发者体验,建议在掌握基础的同时,关注GraalVM、Quarkus等新兴技术栈的发展。

相关文章:

  • 希音Shein测评补单:跨境电商运营的新利器与实操指南
  • 微信小程序使用腾讯云COS SDK实现用户头像上传
  • 学习设计模式《八》——原型模式
  • 手撕基于AMQP协议的简易消息队列-3(项目所用到的工具类的编写)
  • 从零打造个人博客静态页面与TodoList应用:前端开发实战指南
  • 什么是变量提升?
  • C++-缺省参数
  • 菊厂笔试1
  • 电子电器架构 --- 电气/电子架构如何发展以满足其处理和传感器融合需求
  • CAN总线通讯接口卡:工业通信的核心桥梁
  • 在UI原型设计中,低、高保真原型图有什么区别?
  • 验证码(笔记)
  • web 自动化之 Selenium 元素定位和浏览器操作
  • 数据结构 - 10( B- 树 B+ 树 B* 树 4000 字详解 )
  • Node.js 技术原理分析系列9——Node.js addon一文通
  • AI开发跃迁指南(第三章:第四维度1——Milvus、weaviate、redis等向量数据库介绍及对比选型)
  • 腾讯云:数字世界的“量子熔炉”与硅基文明引擎​
  • LeetCode 热题 100 238. 除自身以外数组的乘积
  • 16011.自动分簇KMeans算法
  • element MessageBox 实现底部三个按钮或者更多按钮—开箱即用
  • 洛杉矶奥组委确认2028年奥运会和残奥会开闭幕式场地
  • 融创中国:今年前4个月销售额约112亿元
  • 北约年度报告渲染所谓“中国核威胁”,国防部回应
  • 上海一中院一审公开开庭审理被告人胡欣受贿案
  • 马上评|颜宁“简历打假”的启示
  • 金正恩视察重要军工企业要求推进武力强化变革