MapFlow

PUBLIC LEARNING ROADMAP

Java语法特性与关键字进阶(Python迁移对比) 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

21 个知识节点 · intermediate

发布者:leemuyu

知识目录

基础概念

Java开发环境搭建与工具链

安装JDK、配置IDEA与javac/java运行,先解决'能跑起来',为后续代码阅读与调试提供平台;与Python'开箱即跑'形成工具链对比

建议预留 60 分钟

学习目标

  • 配置JDK与系统环境变量
  • 掌握javac编译与java运行命令
  • 掌握IDEA创建与运行Java项目的基本流程

关键概念

  • JDK/JRE
  • javac与class文件
  • IntelliJ IDEA工程结构
  • main方法入口

为什么学习

  • 作为纯工具性前置,学生需能搭好环境并运行第一个程序即可,无需深究编译内部原理

如何检验理解

  • 能用javac/java在命令行编译运行HelloWorld并说明class文件产生过程
  • 能在IDEA中新建项目并运行带main入口的应用

基础概念

Python→Java迁移导学与代码阅读法

建立强类型、编译执行与显式声明的心智模型,梳理两语言差异清单,为后续逐章用Python类比理解Java奠定方法

建议预留 45 分钟

学习目标

  • 建立强类型与编译型语言心智模型
  • 掌握用Python类比拆解Java示例的方法
  • 形成个人语言差异对比清单

关键概念

  • 静态类型vs动态类型
  • 编译/字节码vs解释执行
  • 显式声明
  • 代码阅读套路

为什么学习

  • 这是贯穿全程的对比学习方法和代码阅读姿势,学生需掌握用以驱动后续每个语法点,属于方法层Use即可

如何检验理解

  • 能口述Python动态类型与Java静态类型、解释执行与字节码编译的三点核心差异
  • 能带着'这句在Python里怎么表达'的问题去阅读Java示例代码

核心技能

基础语法、数据类型与类型转换

变量声明、8种基本数据类型、字面量、运算符和尚窄/拓宽转换;对比Python中'一切皆对象'理解Java原始类型与装箱的差别

建议预留 120 分钟

学习目标

  • 掌握8种基本数据类型及字面量写法
  • 理解类型转换与自动拓宽/强制收窄规则
  • 辨析原始类型与引用类型

关键概念

  • byte/short/int/long/float/double/char/boolean
  • 类型转换
  • final常量
  • var局部类型推断(与Python对比)

为什么学习

  • 类型系统是本目标的根基,必须理解int/long/double等与自动类型转换的规则,才能看懂后续所有代码的类型

如何检验理解

  • 能正确预判各类隐式/显式类型转换的输出与丢失精度场景
  • 能解释int与Integer及boolean不参与数值运算等关键词语义

核心技能

流程控制与常用关键字

if/switch、for/while、break/continue/return及代码块作用域,重点掌握这些控制关键字的语法与典型代码用例

建议预留 90 分钟

学习目标

  • 掌握分支与循环的语法及作用域规则
  • 区分break与continue在全/嵌套循环中的行为
  • 理解return对方法早退的影响

关键概念

  • if-else/switch
  • for/while/do-while
  • break/continue/return
  • 代码块作用域

为什么学习

  • 目标是理解控制关键词语义并会写经典用例,需在真实分支/循环结构中落到可运行代码级别

如何检验理解

  • 能把一段if-else重构为switch并解释两者适用边界
  • 能写出带break/continue/标签循环的用例并预测输出

核心技能

数组与多维数组

数组声明/初始化/遍历与Arrays工具类,理解固定长度与对象数组内存布局;对比Python list的动态扩容与类型约束差异

建议预留 90 分钟

学习目标

  • 掌握数组的声明与三种初始化写法
  • 熟悉Arrays工具类与foreach遍历
  • 理解数组作为引用类型的传递语义

关键概念

  • new int[]
  • length字段
  • Arrays类
  • foreach增强for

为什么学习

  • 数组是泛型/集合的前置且能力要求为熟练,需理解其固定长度与引用存储在集合使用与内存理解上有直接作用

如何检验理解

  • 能创建一维/二维数组并说明引用数组与原始数组布局差异
  • 能解释为何数组长度不可变而Python列表可变

基础概念

API文档查询与笔记整理

查阅Oracle官方Java API文档找类/方法签名与示例,并沉淀个人语言对比笔记;推荐的学习软技能

建议预留 45 分钟

学习目标

  • 学会从API文档提取签名与用例
  • 建立以函数式运用为目标查询的习惯
  • 维护个人对比学习笔记

关键概念

  • API签名
  • Oracle JavaDoc
  • 知识归档

为什么学习

  • 查文档与归档是贯穿学习的软技能,仅需会读签名与用法即可,最好在掌握方法签名结构后展开

如何检验理解

  • 能用官方文档查询一个类的构造器与常用方法签名
  • 能整理一份带Python对比条目的学习笔记

核心技能

类与对象、this/static与构造器

class定义、对象实例化、构造方法重载、this/static关键词与引用传递;从Python的self/类方法迁移理解强类型对象模型

建议预留 120 分钟

学习目标

  • 掌握类与对象及构造器重载
  • 理解this引用与static(类)成员的区别
  • 理解对象引用按值传递但修改变量内容的影响

关键概念

  • class与对象
  • new/构造器
  • this关键词
  • static关键词
  • 引用传递

为什么学习

  • this/static是高频关键词语义核心,学生必须深入理解实例成员与静态成员的归属和调用方式才能读懂所有Java代码

如何检验理解

  • 能解释this调用重载构造器与static成员不依赖实例的机制
  • 能在一个类中用this与static写经典计数器示例

核心技能

断点调试与异常堆栈阅读

在IDEA设置断点单步执行、阅读编译错误与运行时堆栈定位问题,能按关键字报错缩小范围;required工具能力

建议预留 90 分钟

学习目标

  • 掌握IDEA断点与单步调试
  • 学会阅读和定位异常堆栈
  • 能依据报错信息缩小排查范围

关键概念

  • 断点调试
  • 堆栈追踪(Exception stack)
  • 编译/运行期错误
  • watch窗口

为什么学习

  • 调试与阅读堆栈是required能力,贯穿所有语法学习阶段,需达到能借助堆栈定位任意运行时异常的位置

如何检验理解

  • 能借着堆栈第一行快速定位到导致异常的具体行并解释关键字含义
  • 能用断点单步检查变量值变化排查逻辑错误

核心技能

封装与访问控制

public/private/protected/包私有四种访问级别、getter/setter与信息隐藏;对比Python约定式下划线对比Java强制访问控制

建议预留 90 分钟

学习目标

  • 掌握四种访问修饰符的可见范围
  • 理解信息隐藏与getter/setter设计
  • 理解包(package)与访问级别的关系

关键概念

  • public/private/protected
  • 默认(包私有)
  • getter/setter
  • 封装原则

为什么学习

  • 访问控制是系统目标的核心能力,需理解各修饰符的可访问范围与包的关系,是理解多态与框架封装的前提

如何检验理解

  • 能就给定的类与包布局判定每个成员的可见性
  • 能设计带私有字段与公开getter/setter的封装类并说明合理性

核心技能

继承与多态

extends、super、方法重写与重载、向上转型与动态绑定、final与instanceof及Object基类;对比Java单继承与Python多继承差异

建议预留 120 分钟

学习目标

  • 掌握extends继承与super调用
  • 区分重写(@Override)与重载
  • 理解向上转型与动态绑定
  • 理解final与instanceof关键词语义

关键概念

  • extends
  • super关键词
  • 方法重写
  • 多态绑定
  • final关键词
  • instanceof/Object

为什么学习

  • 继承/多态是系统能力要求为熟练的支柱,需深入理解super/final/重写与动态绑定才能支撑抽象类接口章

如何检验理解

  • 能写出父子类重写并解释调用时动态绑定的选择结果
  • 能解释final类/方法/变量的不能继承/重写/改值含义并举例

核心技能

异常处理机制

try-catch-finally、throws/throw、checked/unchecked分类与自定义异常,理解异常传播;对比Python异常哲学与语法差异

建议预留 90 分钟

学习目标

  • 掌握异常处理的try/catch/finally结构
  • 理解throw与throws声明的区别
  • 区分checked与unchecked异常并自定义异常

关键概念

  • Exception/Error层次
  • try-catch-finally
  • throws/throw
  • 自定义异常

为什么学习

  • 异常关键词和体系是本目标基础要点,需理解checked/unchecked强制约束与finally释放语义并能在代码级运用

如何检验理解

  • 能给一段可能出错的读写代码配齐try-catch-finally并正确释放资源
  • 能判断编译是否会强制处理某类异常并解释checked与unchecked之别

核心技能

String与包装类

String不可变性、字符串常量池、StringBuilder/StringBuffer场景与包装类自动装箱拆箱;对比Python字符串不可变与拼接差异

建议预留 120 分钟

学习目标

  • 理解String不可变与常量池机制
  • 掌握StringBuilder/StringBuffer适用场景
  • 理解包装类自动装箱拆箱机制

关键概念

  • String不可变
  • 字符串常量池
  • StringBuilder/StringBuffer
  • Integer等包装类
  • 自动装箱拆箱

为什么学习

  • String的不可变与常量池语义是字符串能力核心,包装类与装箱是泛型/集合类型安全的基础,需理解底细

如何检验理解

  • 能解释String在字面量与new时的常量池差异
  • 能指出大量拼接时StringBuilder的优势并说明装箱发生的时机

补充知识

注解Annotation定义与使用

内置注解(@Override)与自定义注解、元注解保留策略,理解注解仅是元数据标记;为后续学习框架配置打底

建议预留 60 分钟

学习目标

  • 理解注解的本意与内置注解
  • 理解保留策略与元注解
  • 认识注解在框架中的角色

关键概念

  • @Override/@Deprecated
  • @Target/@Retention
  • 注解声明@interface

为什么学习

  • 该能力目标仅为入门level,且为框架基础,本阶段只需辨识常见注解语义即可,无需深入运行时处理

如何检验理解

  • 能识别@Deprecated/@Override等内置注解含义
  • 能声明一个带@Retention/@Target的简单自定义注解

补充知识

IO流与文件操作

字节流/字符流、缓冲流、try-with-resources与Files类,理解自动关闭资源机制;nice_to_have入门级

建议预留 60 分钟

学习目标

  • 掌握File与Files基础文件操作
  • 理解try-with-resources自动关闭
  • 掌握基础字节/字符流读写

关键概念

  • FileInputStream/Reader
  • BufferedReader
  • try-with-resources
  • Files工具类

为什么学习

  • IO能力为nice_to_have入门,本目标以普通文件读写与try-with-resources为主即可,不深挖转换流细节

如何检验理解

  • 能用try-with-resources安全读写一个文本文件并解释资源自动关闭
  • 能指出用Files类完成复制的更简洁写法

补充知识

多线程基础

Thread类与Runnable接口、线程状态与start/run区别、基础同步锁;nice_to_have入门级建立并发概念

建议预留 60 分钟

学习目标

  • 掌握Thread与Runnable创建线程
  • 理解线程状态与start/run原理
  • 了解基本synchronized同步概念

关键概念

  • Thread/Runnable
  • start与run
  • 线程状态
  • synchronized锁

为什么学习

  • 多线程能力目标为推荐/入门,本目标只需认识三种创建方式与start/run差异即可,不做深同步调优

如何检验理解

  • 能用Thread子类与Runnable各创建一线程并解释start与run差异
  • 能大致描述线程六种状态迁移

补充知识

JVM基础原理简介

运行时堆/栈/方法区、基本GC概念与字节码/JIT的编译执行,对比Python解释执行建立内存与字节码认知

建议预留 60 分钟

学习目标

  • 理解堆/栈/方法区内存模型
  • 认识字节码与一次编译处处运行
  • 建立对GC存在性与作用的直觉

关键概念

  • 运行时数据区
  • 栈/堆/方法区
  • 字节码与JIT
  • 垃圾回收概念

为什么学习

  • JVM基础能力为nice_to_have入门,本目标是夯实语法,只需认识内存分区与一次编译处处运行即可

如何检验理解

  • 能以new对象为例说明其去向堆、局部变量去向栈的大致关系
  • 能解释一次编译处处运行与JIT相对Python解释执行的差别

核心技能

抽象类、接口与Lambda前提

abstract、interface、default方法、多接口实现与匿名内部类,理解Java用接口落实多态的方式;是函数式接口背景

建议预留 120 分钟

学习目标

  • 掌握抽象类与abstract关键词
  • 理解接口、default方法与多接口实现
  • 理解匿名内部类并识别函数式接口雏形

关键概念

  • abstract class
  • interface/implements
  • default方法
  • 匿名内部类
  • 功能接口结构

为什么学习

  • interface/abstract是多态设计的核心抽象方法,需理解其语法与语义差异才能接住Lambda与后续框架的依赖注入思想

如何检验理解

  • 能对比说明抽象类与接口在成员与单继承限制上的差异
  • 能定义带default方法的接口并说明其在不可变库上的价值

核心技能

泛型机制与类型安全

类型参数、泛型类/方法/接口、类型擦除与通配符extends/super上界约束;对比Python动态类型理解编译期类型安全价值

建议预留 90 分钟

学习目标

  • 掌握泛型类/方法与泛型接口
  • 理解类型擦除机制
  • 掌握通配符? extends与? super的边界

关键概念

  • 类型参数<E>
  • 泛型擦除
  • 通配符与上/下界
  • 类型安全检查

为什么学习

  • 泛型是目标要求熟练的核心能力,需理解擦除与通配符约束以防出现未经检查转换的经典错误,理解Level停在原理+编码即可

如何检验理解

  • 能定义泛型方法与类并标注类型参数约束
  • 能解释类型擦除后果及'泛型不可用于基本类型'的原因

核心技能

集合框架(List/Set/Map)

List/Set/Map体系、ArrayList/LinkedList/HashSet/HashMap的实现特点与选用、Iterator遍历;对比Python list/dict/set用法差异

建议预留 120 分钟

学习目标

  • 掌握List/Set/Map接口层级
  • 理解ArrayList与LinkedList、HashMap实现与选用
  • 掌握Iterator遍历与泛型结合

关键概念

  • Collection接口树
  • HashMap/HashSet
  • 泛型参数化集合
  • Iterator迭代器

为什么学习

  • 集合是核心能力要求为熟练且高度依赖泛型与数组,需理解各实现类的复杂度与适用选择才能写生产级遍历代码

如何检验理解

  • 能按随机访问/插入删除场景合理选List实现并说明时间复杂度
  • 能用Iterator与foreach遍历集合并指出HashMap键设计要点

补充知识

反射机制基础

Class对象、getClass()、Field/Method/Constructor反射API,理解动态调用与在框架/IOC中的核心地位

建议预留 60 分钟

学习目标

  • 理解Class对象与三种获取方式
  • 了解Field/Method/Constructor反射API
  • 建立反射支撑框架的认识

关键概念

  • Class对象
  • getClass()/class字段
  • 反射API
  • 框架底层调用

为什么学习

  • 反射能力目标为入门level,目的在建立'框架为何能用注解与配置驱动'的直觉,本阶段辨识与简单调用即可

如何检验理解

  • 能通过Class对象获取某个类的构造器与方法并完成一次动态调用
  • 能解释Class与反射在Spring等框架中的基础性角色

核心技能

Lambda表达式与Stream API

函数式接口、Lambda syntax、方法引用与Stream流式操作,开启Java函数式思维;对比Python的lambda与列表推导式

建议预留 120 分钟

学习目标

  • 理解函数式接口与Lambda语法
  • 掌握Stream的中间/终止操作
  • 掌握方法引用与原理对比Python

关键概念

  • 函数式接口@FunctionalInterface
  • Lambda形成
  • Stream API
  • 方法引用

为什么学习

  • Lambda/Stream是推荐的熟练能力且语法在接口基础上,需能实际用Lambda与流对集合写出链式代码而非停留在概念

如何检验理解

  • 能把一个含匿名内部类Comparator改写为Lambda与方法引用并行为一致
  • 能对一个List完成filter/map/collect等流水线操作

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。