Java 词条(295 条)
关键字
abstract标记类或方法还没画完,必须让子类继续补,像只搭了骨架的雕塑,需要后人往上加肉。assert断言:声明某个条件在运行时一定成立,如果不成立就抛出 AssertionError。boolean只有「开/关」两种状态的开关,像电灯的按钮,要么是 true(亮),要么是 false(灭)。break立刻按下停止键,从当前循环或 switch 中跳出来,像看电影时接到紧急电话,立刻起身离开影院。byte只占 1 个字节(8 位)的小整数类型,适合处理二进制数据或大量小整数。caseswitch 语句里的一个具体分支,匹配到对应常量值时执行后面的语句。catch接住 try 里抛出的异常并处理,像守门员接住对方踢来的球。char存放单个 Unicode 字符的小格子,用单引号包裹。class定义对象的图纸,像建筑蓝图规定房子有几个房间、什么结构;根据这张图纸才能造出真正的房子。constJava 中的保留字,目前不能使用;如果写成 const 会编译报错。continue跳过当前这一趟循环的剩余步骤,直接进入下一趟,像排队时遇到不想买的窗口就跳过它。defaultswitch 里没有匹配分支时的默认选择;也用于接口默认方法。dodo-while 循环的开头,表示「先执行一次循环体,再判断条件」。double带小数点的双精度数字盒子,约能保存 15 位有效数字;注意它是近似存储,不是绝对精确。elseif 那条路走不通时的备胎方案,像外卖没抢到券就吃食堂。enum定义一组固定、有限的常量类型,像菜单上固定的那几个选项。extends让子类继承父类的财产,像儿子继承爸爸的房子和车,同时还可以有自己的新东西。final给变量贴上封条,值定好后就不能再改,像结婚证上的名字一旦登记就不能随便涂改。finally不管前面有没有异常都会执行,像离开房间时不管有没有下雨都要关灯。float占 4 个字节的单精度小数类型,精度比 double 低,能省内存。for按次数一遍遍执行,像洗衣机设定好洗 3 次,就自动转 3 圈。gotoJava 中的保留字,目前不能使用;如果写成 goto 会编译报错。if路口的红绿灯:条件为真就绿灯通行,为假就停下不走。implements类承诺实现接口规定的所有技能,像学生按课程表完成所有必修课才能毕业。import给别的包里的类发一张「短名通行证」:写了它,后面就能直接写短类名 Scanner;不写也能用,只是每次都得写全名 java.util.Scanner。instanceof判断一个对象是不是某个类(或接口)的实例,返回 true 或 false。int存放整数的普通抽屉,大小固定,能装约正负 21 亿以内的数。interface定义一组能力规范,不写具体实现,像菜单只列菜名和价格,具体怎么做由厨师决定。long能存更大整数的 8 字节类型,适合表示时间戳、大数量等。native标记方法由本地非 Java 代码(如 C/C++)实现,Java 里只声明不实现。new根据 class 这张图纸真正造出一个对象,像工厂按模具生产出一个具体产品。package给类做名字分组(命名空间),像给同姓的人归到一个家族,避免重名;文件夹通常跟着包名走,但本质是名字分组。private给房间上锁,只有房间主人(类自己)能进;外部代码不能直接访问。protected比 private 宽松:本类、同一个包里的其他类,以及子类都可以访问。public把门完全打开,谁都能进;被它修饰的成员或类在任何地方都可见。return把结果快递回调用方,同时结束当前方法,像外卖员把餐送到就完成任务。short占 2 个字节的短整数类型,比 int 小,适合内存敏感的场景。static属于整个班级共用的公告栏,不是某个学生私有的;不需要创建对象就能使用。strictfp让浮点运算严格按照 IEEE 754 标准执行,保证跨平台结果一致。super访问当前对象中继承自父类的成员,或在子类构造中调用父类构造方法。switch多路开关,根据变量的值直接跳到对应档位,像电风扇按 1、2、3 档选择风速。synchronized保证同一时刻只有一个线程执行某段代码,防止多线程同时修改数据出错。this指代当前对象自己,像一个人说「我的名字」时,指的就是他自己。throw主动抛出一个异常对象,像服务员发现菜里有虫子就大喊「这盘菜不能吃」。throws声明方法可能抛出哪些异常,让调用方知道需要处理或继续上抛。transient标记字段不需要被序列化保存,像日记里有些隐私内容不想被复印。try把可能出错的代码包进安全气囊,出了问题再想办法处理,而不是直接撞车。void方法执行完不往回带任何东西,像按下开关只亮灯,不返回灯泡的型号。volatile保证变量的修改对所有线程立即可见,但不保证复合操作的原子性。while只要条件还成立就不停执行,像登山时没到山顶就一直往上爬。trueboolean 类型的真值字面量。falseboolean 类型的假值字面量。null表示引用类型变量暂时不指向任何对象。var让编译器自动推断局部变量类型,代码写起来更简洁(Java 10+)。recordJava 16+ 用一行代码定义数据类;组件引用不可重新赋值,若组件是可变对象其内部状态仍可改变。yield在 switch 表达式中返回一个值(Java 14+)。sealed限制哪些类可以继承当前类,像给继承关系加上白名单(Java 17+)。permits配合 sealed 列出允许继承当前类的类名单。
常用类
System提供系统级工具,最常用的是标准输入输出和获取系统属性。String表示一串不可变的文字;字符串内容一旦创建就不能修改,任何修改操作都会返回新字符串。StringBuilder可高效拼接和修改字符串的可变字符序列;频繁修改字符串时比 String 快。Integerint 的包装类,提供数字转换、比较等工具方法,并支持自动装箱拆箱。Doubledouble 的包装类,提供小数相关工具和常量。Longlong 的包装类,处理大整数和 long 类型转换。Booleanboolean 的包装类,支持自动装箱拆箱。Characterchar 的包装类,提供字符判断(数字、字母、大小写转换等)工具。Math提供常用数学计算和常量,全是静态方法,不需要创建对象。Arrays提供数组排序、查找、转字符串等静态工具方法。ArrayList大小可变的动态数组,是 List 接口最常用的实现。HashMap通过键快速查找值的键值对集合,是 Map 接口最常用的实现。HashSet存储不重复元素的无序集合,基于 HashMap 实现。List有序集合的接口,规定了一组按索引访问元素的方法,常见实现是 ArrayList。Map键值对集合的接口,常见实现是 HashMap。Set不重复元素集合的接口,常见实现是 HashSet。Collections提供集合排序、查找、反转、同步包装等静态工具方法。Scanner从键盘或文件里读取输入的数据,像收银员用扫码枪读取商品信息。Random生成伪随机数,比 Math.random() 更灵活,可以指定种子。ObjectJava 中所有类的终极父类,每个类都直接或间接继承它。ExceptionException 是受检异常的超类型;RuntimeException 及其子类除外。RuntimeException运行时异常的根类,通常由编程错误引起,不需要显式处理。IOException输入输出操作失败时抛出的受检异常,调用方必须处理或上抛。NullPointerException对 null 引用调用方法或访问字段时抛出的运行时异常。IllegalArgumentException方法收到不合法参数时抛出的运行时异常。ArithmeticException发生算术错误时抛出,最常见的是整数除零。ArrayIndexOutOfBoundsException访问数组不存在的索引时抛出的运行时异常。NumberFormatException字符串转数字失败时抛出的运行时异常。Thread代表程序中的一个执行线程,用于实现多任务并发。Runnable表示一个可以在线程中执行的任务,是函数式接口。Comparable让类的对象可以按自然顺序比较的接口。Comparator定义两个对象比较规则的接口,可灵活定制排序顺序。Optional包装可能为空的值,避免显式 null 检查,降低空指针风险(Java 8+)。
注解
Override标记子类方法重写了父类方法,让编译器帮忙检查是否真的在重写。Deprecated标记某个元素已过时,不建议使用,调用时编译器会给出警告。SuppressWarnings让编译器不显示指定类型的警告。FunctionalInterface标记接口是函数式接口,只能有一个抽象方法;便于用 Lambda 实现。
运算符
=赋值运算符:把右边的值装进左边的变量,不是数学里的等于。==判断两边是否相等;对基本类型比值,对引用类型比内存地址。!=判断两边是否不相等。<判断左边是否小于右边,返回 boolean。>判断左边是否大于右边,返回 boolean。<=判断左边是否小于或等于右边,返回 boolean。>=判断左边是否大于或等于右边,返回 boolean。+数字相加,或字符串拼接(只要有一边是字符串就变成拼接)。-两数相减,或表示负数。*两数相乘。/两数相除;整数相除会截断小数部分。%求两数相除后的余数。++让变量值加 1;前缀先加后用,后缀先用后加。--让变量值减 1;前缀先减后用,后缀先用后减。+=把右边加到左边变量里再保存。-=把左边变量减去右边再保存。*=把左边变量乘以右边再保存。/=把左边变量除以右边再保存。%=把左边变量对右边取余再保存。&&逻辑与:两边都为真才为真;左边为假时右边不执行(短路)。||逻辑或:只要一边为真就为真;左边为真时右边不执行(短路)。!逻辑非:把真变假,把假变真。&对二进制位逐位与运算,也可做不短路的逻辑与。|对二进制位逐位或运算,也可做不短路的逻辑或。^二进制位不同得 1,相同得 0;也可用于布尔异或。~把二进制位 0 变 1、1 变 0,包括符号位。<<把二进制位整体向左移动,右边补 0。>>把二进制位向右移,左边补符号位(算术右移)。>>>把二进制位向右移,左边总是补 0(逻辑右移)。?:三元条件运算符:根据条件选两个值中的一个。->Lambda 表达式中分隔参数和实现体的箭头。::方法引用:把已有方法当作函数式接口实例使用,是 Lambda 的简写。?三元条件运算符的问号部分:条件为真取冒号前的值,为假取冒号后的值。
符号
...可变参数:表示方法可以接受任意多个同类型参数,调用时当作数组用。(左圆括号:用于方法调用、参数列表、改变运算优先级、类型强转。)右圆括号:与左圆括号成对使用,结束一个分组或参数列表。[左方括号:用于数组声明和访问数组元素。]右方括号:与左方括号成对使用。{左花括号:包裹代码块、类体、方法体、初始化块等。}右花括号:与左花括号成对使用,结束一个代码块。;分号:表示一条语句结束,Java 用它而不是换行来判断语句边界。,逗号:分隔列表中的多个元素,如参数、数组元素、枚举值等。.点号:访问对象的成员或调用方法,也用于分隔包路径。:冒号:在三元运算符里分隔两个候选值,在增强 for 里分隔类型和集合,在 switch 的 case 后引出语句。
输入输出
println把内容打印到控制台并自动换行,是 Java 最常用的输出打印语句。print把内容打印到控制台,但不自动换行,下一条输出会接着往后打印。scanf使用 Scanner 类从控制台读取用户输入,是 Java 中类似 C 语言 scanf 的常用做法。bufferedReaderBufferedReader 是带缓冲的字符输入流,适合大量文本的高效读取。formatSystem.out.printf / String.format 按指定格式输出字符串,%d 占位整数、%f 占位小数、%s 占位字符串。
字符串方法
string_length返回字符串中的字符数量(Unicode 代码单元数)。string_charAt返回字符串指定索引位置的单个字符,索引从 0 开始。string_substring截取字符串的一个子串;包含起始索引,不包含结束索引。string_contains检查字符串是否包含指定的子串,返回 true 或 false。string_startsWith检查字符串是否以指定前缀开头。string_endsWith检查字符串是否以指定后缀结尾。string_indexOf返回子串在字符串中第一次出现的索引,找不到返回 -1。string_lastIndexOf从后往前找,返回子串在字符串中最后一次出现的索引,找不到返回 -1。string_trim去掉字符串开头和结尾的 ASCII 空白字符(空格、Tab、换行等),返回新字符串。string_toLowerCase把字符串中的所有字母转换成小写,返回新的字符串。string_toUpperCase把字符串中的所有字母转换成大写,返回新的字符串。string_replace把字符串中所有匹配的旧字符或旧子串替换成新的,返回新字符串。string_split按正则表达式把字符串切分成字符串数组。string_equals比较两个字符串的内容是否相等;字符串内容比较必须用 equals,不能用 ==。string_equalsIgnore忽略大小写比较两个字符串的内容是否相等。string_isEmpty检查字符串长度是否为 0,空字符串返回 true。string_repeat把字符串重复 n 次并返回新字符串(Java 11+)。String.join用指定的分隔符把多个字符串(或 Iterable 里的元素)连接成一条新字符串。charAt返回字符串指定索引位置的字符,索引从 0 开始。substring截取字符串的一个子串,包含起始索引,不包含结束索引;只给一个参数则截取到末尾。indexOf返回子串在字符串中第一次出现的索引,找不到返回 -1。lastIndexOf从字符串末尾往前找,返回子串最后一次出现的索引,找不到返回 -1。equalsIgnoreCase忽略大小写比较两个字符串的内容是否相等。compareTo按字典顺序比较两个字符串:相等返回 0,调用者小返回负数,调用者大返回正数。toUpperCase把字符串里的所有字母都转成大写,返回新的字符串,原字符串不变。toLowerCase把字符串里的所有字母都转成小写,返回新的字符串,原字符串不变。trim去掉字符串开头和结尾的空白字符(空格、Tab、换行等),返回新字符串。strip去掉字符串两端的 Unicode 空白字符,功能比 trim 更全(Java 11+)。split按正则表达式把字符串切分成字符串数组。replace把字符串中所有出现的旧字符或旧子串替换成新的,返回新字符串。replaceAll按正则表达式匹配并替换字符串中所有匹配的部分。startsWith检查字符串是否以指定的前缀开头。endsWith检查字符串是否以指定的后缀结尾。isBlank检查字符串是否为空或只包含空白字符(Java 11+)。toCharArray把字符串拆成一个字符数组,方便逐个字符处理。
集合方法
list_add在 List 的末尾追加一个元素。list_get按索引从 List 中获取元素,索引从 0 开始。list_set把 List 指定索引位置的元素替换为新元素,返回被替换的旧元素。list_remove从 List 中删除元素;调用 remove(索引) 返回被删元素,调用 remove(对象) 返回 boolean。list_size返回 List 中元素的数量。list_contains检查 List 是否包含指定元素,返回 true 或 false。list_forEach对 List 中的每个元素执行一次传入的操作,是一种函数式遍历方式(Java 8+)。arraylist_construct创建 ArrayList 实例,它是 List 接口最常用的可变长数组实现。map_put往 Map 中放入一对键值;如果键已存在,会用新值覆盖旧值。map_get根据键从 Map 中取值;键不存在时返回 null。map_containsKey检查 Map 中是否包含指定的键,返回 true 或 false。map_remove从 Map 中删除指定键对应的条目,返回被删除的值;键不存在返回 null。map_forEach用函数式方式遍历 Map 中的每一对键值(Java 8+)。hashmap_construct创建 HashMap 实例,它是 Map 接口最常用的键值对实现。add往 List 或 Set 末尾添加一个元素;添加成功通常返回 true。get按索引从 List 取元素,或按键从 Map 取值。remove从 List 中按索引或按对象删除元素;从 Map 中按键删除条目。set把 List 指定索引位置的元素替换为新元素,返回被替换的旧元素。size返回集合中元素的数量。clear清空集合中的所有元素,使其变为空集合。
数学方法
math_abs返回一个数的绝对值。math_max返回两个数中较大的那个。math_min返回两个数中较小的那个。math_pow计算 a 的 b 次幂,结果以 double 返回。math_sqrt返回一个数的平方根。math_random返回一个大于等于 0 且小于 1 的伪随机 double 数。math_round对浮点数四舍五入取整;float 返回 int,double 返回 long。math_ceil向上取整,返回不小于参数的最小整数,以 double 形式返回。math_floor向下取整,返回不大于参数的最大整数,以 double 形式返回。abs返回一个数的绝对值,负数变正数,正数和零不变。max返回两个数中较大的那个。min返回两个数中较小的那个。pow计算 a 的 b 次幂,结果以 double 返回。sqrt返回一个数的平方根。random返回一个大于等于 0 且小于 1 的伪随机 double 数。round对浮点数四舍五入取整;float 返回 int,double 返回 long。floor返回不大于参数的最大整数,以 double 形式返回。ceil返回不小于参数的最小整数,以 double 形式返回。
常用功能
scanner_nextLineScanner 读取用户输入的一整行文本,直到遇到换行符。scanner_nextIntScanner 读取用户输入的下一个整数。try_catch用 try-catch 捕获并处理可能抛出的异常,防止程序直接崩溃。try_catch_finallytry-catch-finally 在捕获异常的同时,确保 finally 里的清理代码一定会执行。throw_exception用 throw 主动抛出一个异常对象,告诉调用者这里出现了无法继续的错误。for_loopfor 循环按初始化、条件、更新三个部分控制循环次数,是最常用的循环结构。for_each增强 for 循环,按顺序遍历数组或 Iterable 集合中的每个元素。while_loopwhile 循环在条件为 true 时反复执行循环体,先判断后执行。do_whiledo-while 循环先执行一次循环体,然后再判断条件是否继续执行。if_elseif-else 根据条件真假决定执行哪一段代码。switch_caseswitch-case 根据表达式的值跳转到对应的分支执行。class_define用 class 关键字定义一个类,类是创建对象的模板。method_define在类中定义一个方法,描述一段可以被重复调用的功能。constructor构造方法是一种特殊方法,名称和类名相同,没有返回值类型,用于创建对象时初始化。this_keywordthis 指代当前对象实例,常用来区分同名的参数和字段。static_keywordstatic 修饰的成员属于类本身,而不是某个对象实例,不需要创建对象就能使用。final_keywordfinal 表示不可变:变量赋值后不能改,方法不能重写,类不能被继承。interface_define用 interface 定义一组行为规范,实现类必须完成这些方法。implements_interface用 implements 让类实现一个或多个接口,必须实现接口中声明的所有抽象方法。inheritance用 extends 让子类继承父类的字段和方法,并可以扩展自己的功能。object_clone通过实现 Cloneable 接口并重写 clone() 方法来复制对象。generic_class泛型类在定义时不指定具体类型,使用时再指定,既保证类型安全又避免强制转换。lambda_expressionLambda 表达式是一种匿名函数写法,可以作为函数式接口的实例(Java 8+)。stream_apiStream API 提供流式处理集合数据的方式,支持过滤、映射、归约等操作(Java 8+)。optional_classOptional 是一个容器对象,用于包装可能为 null 的值,帮助避免空指针异常(Java 8+)。date_timejava.time 包提供了 LocalDate、LocalTime、LocalDateTime 等现代日期时间 API(Java 8+)。file_read用 Files.readString / readAllLines 把文件内容读成字符串或行列表(Java 11+)。file_write用 Files.writeString 把字符串写入文件,默认覆盖,可用 APPEND 追加(Java 11+)。json_parseJava 标准库没有内置 JSON 解析,需要引入 Jackson、Gson 等第三方库。regex_match用正则表达式检查字符串是否匹配某种模式;Java 字符串中的反斜杠需要双重转义。enum_define用 enum 定义一组固定、有限的常量,常用于表示状态、选项等。annotation_use注解是 @ 开头的元数据,可以贴在类、方法、字段上,供编译器或框架读取。
输出
System.out.println往控制台打印一行内容,打完自动换行,像在黑板上写完一句话就换到下一行。System.out.print把内容打印到控制台,但不换行,下一条输出会接着往后打印。System.out.printf按指定格式打印:%s 占位字符串、%d 占位整数、%f 占位小数。
系统
System.currentTimeMillis返回当前时间与 1970 年 1 月 1 日 00:00:00 UTC 之间相差的毫秒数,常用来计时。System.exit立即终止整个 Java 虚拟机,非 0 状态码通常表示异常退出。
常用成员
length数组用 .length(没有括号)获取元素个数;字符串用 .length()(有括号)获取字符数量。
常用方法
比较
equals比较两个对象的内容是否相等;字符串比较内容必须用 equals,不能用 ==。
Map 方法
put往 Map 里放入一对键值;如果键已存在,会用新值覆盖旧值并返回旧值。containsKey检查 Map 中是否包含指定的键。containsValue检查 Map 中是否包含指定的值。keySet返回 Map 中所有键组成的 Set,常用于遍历键。values返回 Map 中所有值组成的 Collection。entrySet返回 Map 中所有键值对组成的 Set,是同时遍历键和值最高效的方式。getOrDefault按键取值,如果键不存在则返回你指定的默认值,避免拿到 null。
排序
sort对数组或 List 进行排序:Arrays.sort 排数组,Collections.sort 排 List,默认升序。
数组工具
asList把若干元素或一个数组快速包装成固定大小的 List。fill把数组的每个位置都填成同一个值。binarySearch在已排序的数组中二分查找目标,返回索引;找不到返回负数。
输入
nextLineScanner 读取用户输入的一整行文本,直到遇到换行符。nextIntScanner 读取用户输入的下一个整数。nextScanner 读取下一个以空白分隔的 token(遇到空格、Tab、换行就停止)。nextDoubleScanner 读取用户输入的下一个 double 类型小数。hasNext检查 Scanner 中是否还有下一个 token,常用于循环读取输入。
Optional
orElse从 Optional 中取值,如果 Optional 为空则返回你指定的默认值。isPresent检查 Optional 中是否包含非空值。ifPresent如果 Optional 里有值,就执行传入的操作;为空则什么都不做。ofNullable把可能为 null 的值包装成 Optional:非 null 时返回有值的 Optional,null 时返回空 Optional。
线程
sleep让当前线程暂停指定的毫秒数,时间到后继续执行。start启动一个新线程,让它的 run 方法在新的执行路径中运行。run线程要执行的代码写在 run 方法里;由 start() 自动调用,不要直接调用。join等待另一个线程执行结束,当前线程再继续往下走。
静态工厂
of工厂方法:Optional.of 包装非空值,List.of/Map.of/Set.of 创建不可变集合(Java 9+)。
资源
close关闭已打开的资源(如 Scanner、文件流、数据库连接),释放系统占用的句柄。
通用
字符串被双引号包住的字符序列,Java 会把它当成 String 对象;String 是不可变的,修改操作会返回新对象。数字一个数字字面量:整数默认是 int 类型,小数默认是 double 类型,想表示 long 或 float 要加后缀。注释单行注释:// 后面的内容是给人看的说明,编译器会完全忽略它。块注释块注释:/* 和 */ 之间的所有内容都是说明文字,可以跨多行,编译器不执行。变量变量:一个有名字的数据容器,必须先声明类型,里面只能装对应类型的值。函数调用方法调用:把参数传给一个方法,让它执行一段功能,可能得到返回值。方法实例方法调用:通过 对象.方法名() 让某个对象执行它自己的行为。属性字段访问:通过 对象.字段名 读取或修改对象身上的一个属性(成员变量)。装饰器注解:以 @ 开头的元数据标签,贴在类、方法或字段上,供编译器或框架读取。缩进缩进:Java 的代码结构由大括号 {} 决定,缩进只是为了让代码层次对人更可读。运算符运算符:对数据做算术、比较、位运算或赋值等操作的符号。