Java 基础知识总结(超详细整理)_java基础知识总结 超详细,收藏这篇就够了

以下是 Java 基础知识超详细总结(2026 年视角,基于 Java 21 LTS 及主流面试/实际开发需求)。这份整理力求全面、系统、易懂,覆盖从零基础到核心进阶的绝大部分内容。收藏这篇基本就够了(后续进阶如集合、并发、JVM、Spring 等可另开专题)。

内容分为 10 大模块,每模块包含核心概念、代码示例、易错点 & 面试高频考点。

1. Java 概述 & 运行机制(必背)

Java 三大特性(2026 常问):

  • 一次编写,到处运行(平台无关性)
  • 面向对象
  • 健壮性(自动垃圾回收 + 异常处理)

JDK / JRE / JVM 区别(经典面试题):

  • JDK = Java 开发工具包(开发 + 运行)
  • JRE = Java 运行环境(仅运行)
  • JVM = Java 虚拟机(真正执行字节码)

Java 程序执行流程
源代码(.java) → javac 编译 → 字节码(.class) → 类加载器 → JVM(解释器 + JIT 编译器) → 机器码执行

Java 版本演进速记(面试常考):

  • Java 8(2014):Lambda、Stream、Optional、默认方法
  • Java 11(2018 LTS):模块化(JPMS)、var 局部变量类型推断
  • Java 17(2021 LTS):密封类、记录类(record)、增强 switch
  • Java 21(2023 LTS):虚拟线程(Project Loom)、结构化并发、Sequenced Collections

2. 基本数据类型 & 包装类

类型字节默认值包装类自动装箱/拆箱陷阱(面试必考)
byte10Byte-128 ~ 127
short20Short-32768 ~ 32767
int40Integer缓存 -128~127
long80LLong加 L
float40.0fFloat加 f
double80.0Double默认浮点
char2‘’CharacterUnicode 0~65535
boolean~1bitfalseBoolean不能用 0/1 代替

自动装箱/拆箱经典陷阱

Integer a =100;Integer b =100;System.out.println(a == b);// true(缓存)Integer c =200;Integer d =200;System.out.println(c == d);// false(超出缓存范围,新对象)

面试扩展:为什么 Integer 缓存 -128~127?(性能优化 + 常量池)

3. 运算符 & 优先级(易错点集中营)

优先级口诀(从高到低):

  • 后缀(. [] () ++ --) > 前缀(++ – ! ~ new) > 算术 > 移位 > 关系 > 相等 > 位运算 > 逻辑 > 三元 > 赋值

复合赋值隐式转换(经典笔试题):

short s =1; s +=1;// 合法,等价 s = (short)(s + 1) s = s +1;// 编译错误!int 不能赋给 short

字符串拼接优先级

System.out.println(1+2+"3");// "33"System.out.println("1"+2+3);// "123"

短路 vs 非短路

  • && / || 短路(左边确定就不算右边)
  • & / | 不短路(两边都算,可能 NPE)

4. 流程控制(if / switch / 循环)

switch 增强(Java 17+):

String day ="MON";String type =switch(day){case"MON","TUE","WED","THU","FRI"->"工作日";case"SAT","SUN"->"周末";default->"非法";};

for-each vs 传统 for
for-each 底层调用 iterator,不能改集合大小

5. 面向对象核心(OOP)——三大特性 + 五大原则

三大特性

  • 封装:private + getter/setter
  • 继承:extends(单继承),super()
  • 多态:父类引用指向子类对象,运行时绑定

五大设计原则(SOLID):

  • S:单一职责(一个类只干一件事)
  • O:开闭原则(对扩展开放,对修改关闭)
  • L:里氏替换(子类可替换父类)
  • I:接口隔离(不要胖接口)
  • D:依赖倒置(面向接口编程)

final 关键字全解

  • 变量:常量
  • 方法:不可重写
  • 类:不可继承

static 关键字

  • 静态变量/方法:类级别
  • 静态代码块:类加载时执行(只一次)

6. 数组 & 常用类(String / StringBuilder / Math / Date)

数组初始化

int[] arr =newint[5];// 全 0int[] arr2 ={1,2,3};// 静态初始化

String 不可变性(面试核心):

String s ="hello"; s = s +" world";// 实际创建新对象,原 "hello" 不变

String / StringBuilder / StringBuffer 对比

可变性线程安全适用场景
String不可变常量、频繁拼接少
StringBuilder可变非安全单线程高频拼接
StringBuffer可变安全多线程(现已少用)

常用 API

  • equals() vs ==(String 重写了 equals)
  • intern()(字符串常量池)

7. 异常处理(try-catch-finally-throw-throws)

异常体系

  • Throwable
    • Error(严重错误,如 OutOfMemoryError)
    • Exception
      • RuntimeException(非检查,如 NullPointerException)
      • Checked Exception(必须处理,如 IOException)

经典写法(Java 7+ 多 catch / try-with-resources):

try(FileInputStream fis =newFileInputStream("file.txt")){// ...}catch(IOException|SQLException e){// ...}finally{// 一定执行(释放资源)}

8. 常用工具类 & 枚举 & 记录类(Java 14+)

枚举(enum)

publicenumSeason{SPRING("春"),SUMMER("夏");privatefinalString name;Season(String name){this.name = name;}}

记录类(record,Java 16+ 稳定)

publicrecordPoint(int x,int y){}// 自动生成 equals、hashCode、toString、getter

9. 泛型(Generics)基础

常用写法

List<String> list =newArrayList<>();// 钻石语法(Java 7+)

泛型擦除:编译后泛型信息丢失(运行时 List 和 List 是同一个类)

通配符

  • ? extends T:上限(可读不可写)
  • ? super T:下限(可写不可读)

10. 反射 & 注解基础(入门级)

反射三要素

  • Class 对象
  • Field / Method / Constructor

获取 Class 对象三种方式

Class<?> clazz1 =Class.forName("java.lang.String");Class<?> clazz2 =String.class;Class<?> clazz3 =newString().getClass();

注解入门(Java 5+):

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceMyAnnotation{Stringvalue()default"hello";}

最后总结:Java 基础学习路径建议(2026 版)

  1. 环境搭建 + 语法(1 周)
  2. 面向对象 + 数组/字符串(2 周)
  3. 集合框架预习 + 异常(1 周)
  4. 多线程入门 + IO 流(2 周)
  5. 泛型 + 反射 + 注解(1 周)
  6. 刷 LeetCode 简单题 + 复习易错点(持续)

一句话背诵口诀(面试速记):
八基四引,装箱拆箱陷阱多;运算优先短路别算错;OOP 三大五原则记牢,final static 位置要分清;String 不可变,Builder 可变快;异常分 checked 和 runtime,反射注解入门要会写。”

这份总结基本覆盖 90% 的 Java 基础面试和实际开发需求。如果需要针对某个模块(如集合、多线程、JVM)再做超详细展开,或者附上代码练习题,继续告诉我~

Read more

Claude Code免费使用教程,前端必看!

Claude Code免费使用教程,前端必看!

目前claude有两种使用方式,一种是官方购买渠道(太贵了,用不起,扎心。。。),还一种就是通过api方式,就是下面我讲的通过any-router提供的api调通就行~相当于中转站,主要是免费啊,谁能说不香! 1.注册LinuxDo账户 目前AnyRouter取消了github登录方式,只能通过LinuxDo账户登录,或者edu的邮箱登录,这里选择使用LinuxDo登录。 linux do官方网址:https://linux.do/   linux do邀请码:2E917F23-D9BF-44FE-BCBD-AE6AB3B1FC17 提示:如果Linuxdo邀请码失效,注册页面填写邀请码的那个输入框下面有邀请码链接,如图: 申请理由稍微写写,别全打逗号啥的,认真写下很快就过了。   2.any Router登录使用 上面linux do账号注册完毕就可以,登录any router了 any router网址:https://anyrouter.top/register?aff=iVs0    (貌似目前需要挂绿色软件才能登录上去) 一定要复制上面的网址(别删

By Ne0inhk
【Linux篇章】再续传输层协议TCP:用技术隐喻重构网络世界的底层逻辑,用算法演绎‘网络因果律’的终极推演(通俗理解TCP协议,这一篇就够了)!

【Linux篇章】再续传输层协议TCP:用技术隐喻重构网络世界的底层逻辑,用算法演绎‘网络因果律’的终极推演(通俗理解TCP协议,这一篇就够了)!

📌本篇摘要 * 本篇将根据TCP协议报文的格式来对TCP更深入的了解,学习它的三次握手,四次挥手,滑动窗口等等,到最后能更加深入理解之前写TCP通信的时候,底层到底是如何进行的,读完本篇将会对之前TCP网络通信编程有更深入的认识。 🏠欢迎拜访🏠:点击进入博主主页 📌本篇主题📌:再续TCP协议 📅制作日期📅:2025.12.20 🧭隶属专栏🧭:点击进入所属Linux专栏 一.TCP协议格式 -TCP 全称为 传输控制协议(Transmission Control Protocol). 人如其名, 要对数据的传输进行一个详细的控制。 下面看TCP报文的格式: 下面我们来一个个介绍下这些字段及作用: 1. 🔍十六位窗口大小 * 这里我们知道对于tcp来说,如果接收缓冲区满了,再发送机会被丢弃,因此发送前需要知道对的的接收缓冲区的剩余长度。 * 按量按需发送,必须知道对方的接受缓冲区中剩余空间的大小,因此每次发送的tcp报文都要带有自己剩余接收缓冲区的长度! 2.🔍4位首部长度 * 首先我们要知道tcp光报头就至少20字节(不包含

By Ne0inhk
小白也能看懂的“朴素贝叶斯”算法详解

小白也能看懂的“朴素贝叶斯”算法详解

你想了解朴素贝叶斯(Naive Bayes),但又被那些复杂的数学公式劝退了? 别担心,今天我们不谈枯燥的数学推导,只用最直白的大白话和生活中的例子,带你彻底搞懂这个在机器学习界“又老又快又好用”的经典算法。 1. 从一个“猜水果”的游戏开始 想象一下,我手里拿了一个水果,让你猜它是苹果还是香蕉。 但我只告诉你这个水果的三个特征: 1. 它是红色的。 2. 它是圆形的。 3. 它的直径大概是 10厘米。 你的大脑会飞快地运转: * 红色的?嗯,苹果经常是红的,香蕉一般是黄的。 * 圆形的?苹果是圆的,香蕉是弯的。 * 10厘米?苹果差不多这么大,香蕉虽然长,但没这么宽。 结论: 这肯定是个苹果! 恭喜你,你刚刚就在大脑里运行了一次“贝叶斯推理”的过程。你根据已知的特征(证据),推断出了它属于某个类别(苹果)的概率。 2. 核心灵魂:

By Ne0inhk
【数据结构-初阶】二叉树(2)---堆

【数据结构-初阶】二叉树(2)---堆

🎈主页传送门:良木生香 🔥个人专栏:《C语言》 《数据结构-初阶》 《程序设计》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 上期回顾:在上一篇文章中(【数据结构-初阶】二叉树(1)---树的相关概念),我们学习了树的相关概念,知道了什么是树,树的基本术语有哪些,以及树在我们生活中的具体应用,那么现在我们就来继续学习树的一种类型---二叉树. 目录 一、二叉树的概念: 二、特殊二叉树 2.1、满二叉树 2.2、完全二叉树 2.3、其他的二叉树 三、二叉树的存储结构 3.1、顺序存储 3.2、链式存储 四、顺序结构二叉树实现 4.1、堆的概念与结构

By Ne0inhk