
学Java学到step-17很多朋友跑来问我同一个问题代码里的报错看不太懂是英语太差吗其实不是多数情况下你只是不认识那几十个固定的技术单词。比如看到implements不知道它是实现某个接口的意思看到synchronized拼都拼不出来更别说把AbstractQueuedSynchronizer拆成抽象队列同步器了。这一篇Java编程语言单词汇总我专门按实际场景分类来讲。和背单词书不同的是我不打算从A到Z罗列而是按照你实际遇到它们的场景来分类先解决语法关键字再搞定面向对象、集合框架、异常调试、面试竞赛最后是看企业项目时的高频业务词。适合刚入门Java、准备Java面试或者正在刷蓝桥杯的同学把这篇文章当成一份能随手查的单词清单而不是一本需要从头啃到尾的词典。个人经验先说一句Java的英文词汇量真没有想象中大。你在代码里看到的标识符、类名、报错信息翻来覆去就是那几百个单词的排列组合高频的核心词可能不到一百个。把这一百个词按场景吃透比背一千个生词有用得多。1. 从Hello World开始语法关键字里的高频单词这一章的内容是代码第一屏就会碰到的词。不用每个都背但下面这几组必须烂熟于心。1.1 访问控制符public、private、protectedpublic本意是“公共的”修饰类、方法、字段时表示所有地方都能访问。private是“私有的”只能在自己类的内部访问。protected是最容易让人误解的一个词它并不是比public更安全而是“包内可见加子类可见”。在Java里还有一种没有修饰符的状态叫package-privatepackage是“包”合起来就是“包私有”意思是同一个包内才能访问。为什么需要这些词英文原意直接对应Java语义public、private、protected控制的是“访问范围”。面试里常考的问题“protected和public的区别是什么”按这个思路答就不会乱public谁都能用。private只有我自己能用。protected同一个包里的朋友和我的子类能用。package-private不写修饰符同一个包里的朋友能用。1.2 static和final一对容易用混的修饰词static本意是“静止的、静态的”。在Java里表示这个成员属于类本身不依赖任何对象所以static方法可以用类名直接调用不需要先new一个对象。很多人问为什么main方法要写成public static void mainstatic的原因就是JVM启动时还没有任何对象必须让main方法不依赖对象就能被调用。final本意是“最终的、不可改变的”。final class不能被继承final method不能被重写final variable只能赋值一次。常量定义的经典写法static final int MAX_SIZE 100;static管“类级别只有一份”final管“值不能变”两个词的英文含义合起来就是“静态的、最终的值”。1.3 void、return、new、this、super这些“小词”别小看void原意“空的”方法声明void就是“不返回任何值”。return是“返回”return x;就是把x作为结果交给调用者。new是“新建”new一个对象等于在堆内存里创建一个实例。this是“这个”指向当前对象super是“上级、父类”用来访问父类成员。这几个词都很小但拼写错误率极高。return被写成retrun、reutrninterface被拆成interfa cesynchronized拼不完整都是我在答疑里见过不止一次的。单词英文含义Java场景public公共的任意位置可访问private私有的当前类内部可访问protected受保护的同包加子类可访问static静态的属于类不依赖对象final最终的不可重新赋值不可继承或重写void空的方法无返回值return返回把结果交给调用者new新的创建对象实例this这个当前对象的引用super上级父类对象的引用提示Java的关键字都是小写也不能用作标识符。如果变量命名时想用class、public、static这些词IDE会直接报错因为它们是语言预先保留的“单词”。2. 面向对象英语类、对象、继承、多态的单词原型面向对象是Java的核心这一章的词在简历上、面试里几乎是必考的。2.1 class、object、instance、field、method、constructorclass英文原意是“类别、班级”。在Java里它是描述一类事物的模板所以写class Student就是定义一个“学生类别”。object原意“物体、目标”在Java里叫对象是所有具体数据的载体。instance是“实例、例子”对象和实例经常混着说其实是一个意思类是图纸对象是造出来的那台机器instance是这台机器在内存里的具体存在。field原意“田地”在Java里是类的属性。也有人叫attribute属性或property性质字段的英文词义强调“数据长在类这块地上”。method原意“方法、手段”在Java里是类能执行的动作。constructor原意“建造者”是创建对象时自动执行的那段初始化代码它是new后面真正干活的函数。构造方法没有返回值类型这一点新手很容易疑惑它本身就是“造对象”的造出来的对象就是返回值没有必要再声明一次类型。2.2 encapsulation、inheritance、polymorphism三座大山encapsulation是封装词根capsule是“胶囊”encapsulation就是把药装进胶囊里的动作。Java里把数据和方法包进类里面外部只能通过公开方法访问放在private里的数据就像胶囊里的药粉看不见也碰不到。inheritance是继承用extends落实“子类自动获得父类非私有成员”这件事就叫继承。polymorphism是多态poly-是“多”morph是“形态”合起来就是“多种形态”。同一个父类引用指向不同子类对象调用同一个方法会表现出不同行为这是面试最常考的概念之一。我自己的理解是面向对象三支柱可以直接用英文词义去背encapsulation是把细节装进胶囊inheritance是儿子继承爹的东西polymorphism是一个动作在不同对象身上长成不同样子。2.3 abstract、interface、extends、implementsabstract是“抽象的”在Java里表示只定规范、不写具体实现。interface是“接口”本意是“界面、交汇处”电脑上的USB口就是interface两个设备通过这个口交换数据Java里的interface同样只是“约定”不负责具体实现。extends是“延伸”类继承类用extends意思是新类“延伸”父类的功能。implements是“实现、落实”类实现接口用implements意思是把接口里约定的方法逐个写出来。有人会混淆extends和implements分开记就行extends像你继承了父母的房子可以直接住implements像你接了外包合同活必须自己干。继承是“拿现成的”实现是“履约”。这个区分在写代码时非常重要认错一个关键字编译都过不了。3. 集合框架里的类名是一串会说英文的数据结构说明书进了业务代码阶段集合框架是天天见的。很多初学者复制粘贴ArrayList、HashMap用得很溜却不知道这些类名本身就是英文单词而且名字直接透露了底层数据结构。3.1 Collection、List、Set、Map容器四件套的语义分工Collection是“集合、收藏品”是Java里所有单列集合的顶级接口。List是“列表”强调有序、可重复所以List的实现类都有索引。Set是“集合”数学里的集合不允许有重复元素Java的Set也是一样。Map是“地图、映射”像地图上的“地名对应位置”一样存的是key-value键值对。面试中常问“为什么Map不继承Collection”用词义回答非常清晰Collection里装的是一个个孤独的元素Map里装的是成双成对的映射关系把一对数据塞进单列集合就破坏了语义。它俩都叫“集合”但不是一回事。3.2 实现类命名的规律Array、Linked、Hash、Tree类名 前缀描述结构 接口名。看到ArrayList就知道它是“基于数组的列表”数组在内存里连续排列所以随机访问快。LinkedList是“用链表串起来的列表”链表靠指针一个个连下去所以插入删除快。HashSet、HashMap里的Hash指哈希表按哈希值散列存放所以它们不保证顺序。TreeSet、TreeMap里的Tree指树形结构树可以按规则排列所以它们可以按自然顺序或自定义比较器排序。这个规律解决了一个很实际的困惑面试问“HashMap和TreeMap有什么区别”不需要背什么长篇大论先说名字——HashMap是哈希散列存储无序TreeMap是红黑树存储有序。底层原理的名字已经写在类名里了。3.3 Comparable和Comparator两个“比较词”的分工Comparable和Comparator长得太像了是面试低分重灾区。区别就在后缀。-able结尾表示“可…的”所以Comparable是“自己具备比较能力”类实现Comparable接口后对象自己能和别人比方法是compareTo。-or结尾表示“做…的人或工具”所以Comparator是“外部的比较工具”由第三方提供一个规则方法是compare。让元素实现Comparable元素的类里写compareTo。给排序方法传一个Comparator单独写一个类或Lambda表达式的compare。Arrays.sort和Collections.sort这两个排序工具类名也值得记Arrays是数组的工具箱Collections是集合的工具箱都是静态工具方法的集散地。StringBuilder里的Builder是“建造者”用来高效拼接字符串。Iterator是“迭代器”来自iterate重复、迭代作用就是挨个遍历容器里的元素。热搜里“java排序”“蓝桥杯算法题目”相关场景基本都绕不开这几个名字。4. 把红色报错当英语阅读题异常与调试相关单词看到红色报错就慌是新手常态。其实Java的报错信息是最标准的英语每个异常名都能拆成几个常见单词读懂它们比背异常类列表有用得多。4.1 Exception、Error、RuntimeException异常体系的三个关键名词Exception是“例外”程序里的意外情况。Error是“错误”通常是JVM层面的严重问题程序自身一般处理不了。RuntimeException是“运行期异常”Runtime是“运行时”这类异常属于unchecked exception编译器不强制你处理。常见异常名拆开看全是基础词汇NullPointerExceptionNull空 Pointer指针 Exception异常空指针异常指访问了一个没有指向对象的引用。ArrayIndexOutOfBoundsExceptionArray数组 Index索引 Out of Bounds超出界限数组索引越界。这正是不少人搜过的“java中数组越界异常”。NumberFormatExceptionNumber数字 Format格式 Exception数字格式转换失败。ClassNotFoundExceptionClass类 Not Found没找到加载类时找不到对应类。4.2 throw、throws、try、catch、finally这组动作词try是“尝试”把可能出问题的代码放进去试catch是“抓住”捕获并处理异常finally是“最终”无论有没有异常都会执行常用于关闭资源。throw是“抛出”动作发生在代码里后面跟异常对象throws是“声明抛出”写在方法签名后面后面跟异常类型。throw new IOException()和public void read() throws IOException一个在方法体内一个在方法名旁边。注意finally里的代码即使碰到return也会执行除非杀进程。这是面试必问的隐藏点它背后的语义恰恰是“最终”两个字——无论中途怎么走最后一步都要做。4.3 编译和调试阶段的用词compile、debug、breakpoint、stack tracecompile是“编译”把.java变成.class。debug是“除虫”传说早期计算机真的飞进虫子导致故障从此debug就是排除代码问题。IDE里最常见的几个调试动作breakpoint是断点step over是单步跳过不进入方法内部step into是单步进入进入方法内部stack trace是堆栈踪迹。看报错时那一串“at 类名.方法名(文件:行号)”就是stack trace它告诉你程序是从哪条路走到报错位置的。这里有个实用心得读报错先看第一行异常类型再看最后一处“at”指向的代码八成问题就在那。中间的调用链只是案发现场的路径不用逐行紧张。5. 面试与蓝桥杯都要眼熟的高频缩写JVM、GC、DFS、DP到了面试准备和竞赛刷题阶段单词的重点从“完整单词”变成了“缩写和术语”。面试常被调侃要背的八股文本质上就是这些术语的中文版理解英文原词八股也背得快。5.1 JDK、JRE、JVM环境配置里的三件套JDK是Java Development Kit开发工具包包含编译器、运行时、类库。JRE是Java Runtime Environment运行环境只负责能跑起来。JVM是Java Virtual Machine虚拟机是Java跨平台的基础。装Java时配置环境变量配的就是JDK里的bin目录bin是binary二进制的缩写里面放着javac、java这些可执行程序。区分三者的土办法JVM是发动机JRE是发动机加上驾驶室JDK是整车还附带了维修工具包。开发用JDK只运行装JRE也够。GC是Garbage Collection垃圾回收。Garbage是“垃圾”Collection是“收集”JVM自动回收不再使用的对象内存。面试问“GC什么时候触发、哪些对象会被回收”理解“垃圾”这个词就能推理出答案没有任何引用指向的对象就是等待收集的垃圾。5.2 Thread、Runnable、Synchronized、Volatile、DeadlockThread是“线”线程就是程序里一条独立的执行线索。Runnable是可运行的-able后缀又出现了表示“能被运行的”所以Runnable是一个只有run方法的接口。Synchronized是“同步的”同一时刻只允许一个线程进入临界区。Volatile是“易变的”告诉JVM这个变量随时可能被多个线程改不要使用本地缓存每次都从主内存读。Deadlock是“死锁”Dead是死Lock是锁两个线程互相持有对方需要的锁谁都等不到。这一组词里synchronized是拼写重灾区单词长、拼写不符合发音直觉。我建议动手多写几遍面试让手写单例模式时这个关键词几乎必出。5.3 蓝桥杯场景的缩写DFS、BFS、DP、Greedy、Backtracking参加蓝桥杯这类竞赛时算法词英文含义就是算法思想本身DFSDepth First Search深度优先搜索。Depth是深度First是第一或优先Search是搜索。BFSBreadth First Search广度优先搜索。Breadth是宽度。DPDynamic Programming动态规划。Dynamic是动态的这里的Programming不是写代码而是“规划”。Greedy贪心算法每一步都选当前看起来最优的解。Backtracking回溯算法走一步发现不对就退回上一步换条路。做数字类题目时DFS/BFS常用于搜索与枚举DP常用于最优化问题Greedy用于有最优子结构的场景。看到题目类型能马上反应出缩写解题效率会高很多。5.4 Generic、Reflection、Serialization、Annotation几个进阶术语Generic是泛型词根gen有“种类”的意思把类型本身也变成参数。Reflection是反射像照镜子一样让程序在运行期看到自己的结构。Serialization是序列化把对象变成字节流便于传输和存储。Annotation是注解给代码贴“便签”框架通过读注解来了解代码意图。这几个词在面试中常被连着问理解了英文原意至少不会在概念上犯迷糊。6. 企业项目里的“业务英语”Controller到Consistency如果已经过了基础语法这关开始接触企业项目、Spring MVC、微服务又会遇到一批新的高频词。这一批词不需要背单词书结合项目结构看两遍就能记住。6.1 分层架构常用词Controller、Service、DAO/Repository、Entity一个典型后端项目从入口到数据库基本是Controller → Service → DAO/Repository → Entity这套结构。Controller是“控制器”负责接收请求和返回响应Service是“服务层”放业务逻辑DAO是Data Access Object数据访问对象Repository是“仓库”Spring Data里更常用Entity是“实体”对应数据库表中的一行记录。看到新的类名先想它属于哪一层职责就猜得差不多。比如UserController一定跟用户接口有关UserService一定跟用户业务逻辑有关UserMapperMapper是“映射器”一定跟数据库操作有关。这一套词背下来看Spring Boot项目的目录结构基本不会晕。热搜里“controller层如何防护爬虫”本质是给接口层加校验和限流逻辑Controller的职责搞清楚了这类问题也容易定位。6.2 事务、一致性、权限Transaction、Consistency、PermissionTransaction是“事务”一组操作要么全成功要么全回滚。Consistency是“一致性”比如“java怎么保证数据一致性”核心就是事务、锁、同步这些机制。Permission是“权限”per-有“贯穿、完全”的意思mission是“派遣”合起来是“被允许做的事”。行级权限叫Row-level Permission控制用户只能看到某些行的数据。这类词建议直接用英文原意理解而不是背中文翻译。记住transaction是“一笔交易的所有环节”consistent是“数据到处都一样”permission是“谁被允许干什么”再看框架的具体实现就不会觉得玄。6.3 环境与部署Path、Classpath、Jar、ContainerPath在环境变量配置里等于“搜索路径”系统在Path列出的目录里找命令。配Java环境变量就是把JDK的bin目录加进Path这样你在任意目录敲javac或java系统都能找到可执行程序。Classpath是类路径JVM在Classpath里找.class文件。Jar是Java ARchive的缩写把一组.class和配置文件打成一个包。Container是“容器”把应用和依赖一起打包成可移植的单元。Gateway是“网关”请求进入系统的大门。新手配环境变量最容易犯的错是只配了Path没配JAVA_HOME结果很多工具找不到JDK。JAVA_HOME就是一个约定好的环境变量名指向JDK安装目录Tomcat、Maven这些工具都靠它定位Java。现代构建工具Maven、Gradle会自动管理Classpath多数情况下不用手配但面试问起来要能说出它是“类文件搜索路径”。到这里这份Java编程语言单词汇总也就说得差不多了。我最开始学Java时也抄过一份单词表抄完就忘。后来改成“代码阅读障碍清单”每遇到一个不认识又高频的单词就写进一个文件附上出现位置和翻译每周翻一遍。三个月后源码注释、报错信息、IDE提示基本都能流畅读下来。step-17到这里step-18我们继续。