Java Basic

Java 基础由浅入深。

这不是零散知识点清单,而是一条学习路径:先知道 Java 是什么,再知道程序怎么跑,最后逐步掌握语法、类型、变量和方法。

How to Learn

每一阶段只解决一个问题。

先问:这个阶段我要理解什么?
再说:我能不能用自己的话解释?
然后练:用题目暴露我没讲清楚的地方。
最后复盘:看自检清单,不急着背参考答案。

7 阶段路线

1

先认识 Java 是什么

入门

能用自己的话说出 Java 的核心特点,以及它为什么常用于后端和企业级系统。

检查点:我能不用背列表,讲出 3 个 Java 特点和对应的开发好处。

2

再理解程序怎么跑起来

理解

能讲清楚 JDK、JRE、JVM 的包含关系,以及 Java 跨平台靠的是什么。

检查点:我能画出 JDK → JRE → JVM,并解释 .java → .class → JVM 的过程。

3

学习最小语法动作

入门

能读懂一小段 Java 代码,并解释自增自减、移位、continue、break、return 的执行流程。

检查点:我能逐行推导 i++ / ++i 的结果,并能说出三种跳转语句分别跳到哪里。

4

理解数据怎么表示

应用

能说出 8 种基本类型,并理解整数、浮点数、金额计算和大整数的边界。

检查点:我能解释为什么金额不用 double,以及什么时候考虑 BigDecimal / BigInteger。

5

进入包装类型和常见坑

易错

能区分基本类型和包装类型,并能解释 Integer 缓存、自动装箱拆箱和比较方式。

检查点:我能判断 Integer 127 / 128 的 == 输出,并说明业务比较为什么用 equals。

6

理解数据放在哪里、活多久

理解

能从声明位置、修饰符、生命周期和默认值解释成员变量、局部变量和静态变量。

检查点:我能解释为什么成员变量有默认值,而局部变量必须先赋值。

7

最后用方法组织行为并训练表达

表达

能解释方法返回值、静态方法、实例方法、重载、重写和可变长参数。

检查点:我能用“重载看参数,重写看继承”展开讲出完整区别。

1 Concepts 别急着背语法,先知道 Java 解决什么问题。

基础概念与常识

Java 语言特点、Java SE/EE/ME、Java 与 C++、Oracle JDK 与 OpenJDK。

本阶段目标

能用自己的话说出 Java 的核心特点,以及它为什么常用于后端和企业级系统。

通过标准:我能不用背列表,讲出 3 个 Java 特点和对应的开发好处。

Java 常见特点:面向对象、跨平台、多线程、自动内存管理、编译与解释并存
Java SE 是基础,Java EE 面向企业级服务端开发,Java ME 主要面向嵌入式设备
Java 与 C++ 的常见区别:指针、继承、GC、操作符重载

本阶段补齐内容

  • +Java 语言特点
  • +Java SE vs Java EE vs Java ME
  • +Java 和 C++ 的区别
  • +Oracle JDK vs OpenJDK
下一步:能说明 Java 为什么适合长期维护的系统后,再进入运行模型。
2 JVM 源码不是直接运行的,中间有编译、字节码和 JVM。

JVM / JDK / JRE

JVM、JRE、JDK、字节码、JIT、AOT、编译与解释并存。

本阶段目标

能讲清楚 JDK、JRE、JVM 的包含关系,以及 Java 跨平台靠的是什么。

通过标准:我能画出 JDK → JRE → JVM,并解释 .java → .class → JVM 的过程。

JDK 用于开发,JRE 用于运行,JVM 执行字节码
字节码统一,不同平台有不同 JVM,这是跨平台关键
JIT 慢热但峰值性能好,AOT 启动快但对动态特性有限制
下一步:能讲清楚程序运行链路后,再开始看具体语法。
3 Syntax 先掌握注释、命名、运算和流程跳转这些最基础动作。

基本语法

注释、标识符、关键字、自增自减、移位运算、continue/break/return。

本阶段目标

能读懂一小段 Java 代码,并解释自增自减、移位、continue、break、return 的执行流程。

通过标准:我能逐行推导 i++ / ++i 的结果,并能说出三种跳转语句分别跳到哪里。

注释有单行、多行、文档注释;好代码应尽量自解释
标识符是名字,关键字是被 Java 赋予特殊含义的名字
i++ 先用后加,++i 先加后用;continue 跳本轮,break 跳循环,return 跳方法

本阶段补齐内容

  • +Java 关键字分类
  • +true/false/null 是字面值不是关键字
  • +移位运算的使用场景和类型限制
下一步:能读懂代码执行顺序后,再学习数据如何表示。
4 Types 变量里装的不是“随便的值”,而是有类型、范围和精度的值。

基本数据类型

8 种基本类型、默认值、字节数、取值范围、浮点精度、BigDecimal、BigInteger。

本阶段目标

能说出 8 种基本类型,并理解整数、浮点数、金额计算和大整数的边界。

通过标准:我能解释为什么金额不用 double,以及什么时候考虑 BigDecimal / BigInteger。

一布一字,四整两浮:boolean、char、byte/short/int/long、float/double
long 字面量建议加 L,float 字面量需要加 f/F
金额计算用 BigDecimal,超过 long 的整数用 BigInteger

本阶段补齐内容

  • +基本类型默认值、字节数和取值范围
  • +long/float 字面量注意事项
  • +BigDecimal equals 与 compareTo 区别
  • +BigInteger 溢出场景
下一步:能理解基本类型后,再看为什么还需要包装类型。
5 Wrapper 这里开始有面试高频坑:装箱拆箱、缓存、== 和 equals。

包装类型与装箱拆箱

基本类型和包装类型的用途、存储、默认值、比较方式、缓存机制、装箱拆箱。

本阶段目标

能区分基本类型和包装类型,并能解释 Integer 缓存、自动装箱拆箱和比较方式。

通过标准:我能判断 Integer 127 / 128 的 == 输出,并说明业务比较为什么用 equals。

包装类型是对象,可以用于泛型;基本类型更轻量
包装类型 == 多数比较地址,业务比较值优先用 equals
装箱调用 valueOf,拆箱调用 xxxValue;Integer 缓存默认 -128 到 127

本阶段补齐内容

  • +基本类型和包装类型的存储差异
  • +Float/Double 没有缓存
  • +IntegerCache 可调上限但不建议乱调
下一步:能解释值和对象的区别后,再看变量在不同位置的生命周期。
6 Variables 变量不是只有名字,还涉及作用域、生命周期、默认值和共享方式。

变量与常量

成员变量、局部变量、静态变量、字符型常量和字符串常量。

本阶段目标

能从声明位置、修饰符、生命周期和默认值解释成员变量、局部变量和静态变量。

通过标准:我能解释为什么成员变量有默认值,而局部变量必须先赋值。

成员变量属于类或对象,局部变量属于方法或代码块
成员变量有默认值,局部变量必须先赋值再使用
静态变量被类的所有实例共享;字符常量用单引号,字符串常量用双引号

本阶段补齐内容

  • +成员变量和局部变量的语法、存储、生命周期、默认值完整对比
  • +为什么成员变量有默认值
  • +静态变量作用
  • +字符型常量和字符串常量区别
下一步:能讲清楚变量后,再看方法如何组织行为。
7 Methods 方法把逻辑封装起来,重载、重写、静态方法是面试表达重点。

方法

返回值、参数、静态方法、实例方法、重载、重写和可变长参数。

本阶段目标

能解释方法返回值、静态方法、实例方法、重载、重写和可变长参数。

通过标准:我能用“重载看参数,重写看继承”展开讲出完整区别。

方法按参数和返回值可分为四类:无参无返回、有参无返回、无参有返回、有参有返回
静态方法属于类,不能直接访问实例成员;实例方法没有这个限制
重载看参数,重写看继承;可变参数本质是数组且只能放最后

本阶段补齐内容

  • +方法返回值和四种方法类型
  • +静态方法为什么不能调用非静态成员
  • +静态方法和实例方法完整区别
  • +可变长参数规则和固定参数优先级
下一步:完成后可以进入综合复述:用 3 分钟讲完整个 Java 基础体系。

按阶段进入表达型练习。

每一组练习只服务当前阶段的目标,避免知识点混在一起造成负担。

去阶段练习 →