
简介这份文档是面向河北工业大学在校学生的Java期末考试复习资料聚焦课程重点与常见题型的梳理适合期末冲刺阶段对照查漏补缺、熟悉命题风格的中低年级学习者使用。压缩包内共1个doc文件整体约68KB以文字题目与部分参考答案为主便于打印或电子端随时翻阅。目前已有286人学习下载可作为同校同课程备考的参考样本。内容围绕Java基础语法、面向对象等课程核心知识点组织题目并附有部分答案读者可据此自测掌握程度、定位薄弱环节再结合课堂笔记与教材针对性补强对初次接触该课程考试形式的学生也能借此了解题型分布与答题思路减少盲目刷题的时间成本提升复习效率。1. Java 期末复习的知识地图从语法骨架到面向对象主干Java 期末这张卷子拉开差距的从来不是会不会写for循环而是能不能在选择题里一眼看穿「平台无关」「继承边界」「接口与抽象类的分工」这几处高频陷阱。整门课的知识地图其实可以压成一条主线语言基础关键字、数据类型、运算符、流程控制→ 面向对象三大特性封装、继承、多态→ 类与接口的修饰符规则 → 异常处理与常用类库String、Scanner、集合→ 图形界面与布局管理。这条线里前半段靠记忆和辨析后半段靠理解对象模型。复习时最忌讳的是把 Java 当成 C 语言来背语法因为 Java 的很多考点比如默认访问权限、static方法不能碰实例属性、finally的搭档都是围绕「对象」和「包」设计的。这份复习题正好覆盖了这些骨架适合已经学过一遍、需要系统查漏补缺的人。2. 语言基础与关键字那些一考就错的辨析点2.1 关键字、标识符与编译运行命令Java 的关键字是固定保留字不能拿来当变量名或类名。复习题里出现的default、abstract、package都是关键字而number不是——这类题考的是「长得像关键字但不是」的干扰项。常见的关键字清单要能默写出来访问控制public、protected、private、类与接口class、interface、extends、implements、修饰符static、final、abstract、流程控制if、else、switch、case、default、for、while、do、break、continue、return、异常try、catch、finally、throw、throws、包package、import等。注意true、false、null是字面量严格说不算关键字但同样不能当标识符。编译和运行命令是送分题但每年都有人记反# 编译把 .java 源文件编译成 .class 字节码 javac Demo.java # 运行启动 JVM 执行字节码注意不带 .class 后缀 java Demojavac.exe负责编译java.exe负责运行这是两个不同阶段的工具。编译期检查语法和类型运行期才真正加载类、分配对象。理解这个分界后面很多「编译错误还是运行错误」的判断题就不会翻车。2.2 数据类型、类型转换与运算符Java 的八种基本类型要按「字节数 取值范围」记牢byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean(1 位逻辑值大小未严格规定)。自动类型转换发生在「小范围 → 大范围」方向比如byte → int、int → double反过来必须强制转换而且可能丢精度。复习题里int a (int) 8846.0是显式强转float a 10是自动提升都不算信息丢失真正会丢信息的是把大范围值硬塞进小范围比如byte b (byte) 200。运算符部分重点看自增自减和复合赋值。x 1合法x 1 5、i 1、ab 1都是非法赋值表达式——赋值号左边必须是变量。这类题的错误选项往往故意把「表达式」和「左值」混在一起判断标准就一条等号左边能不能被赋值。2.3 流程控制与选择语句的边界选择语句if、switch的本质是「根据条件改变执行顺序」它不负责重复执行。复习题里「根据某一条件重复执行一部分代码直到满足终止条件」描述的是循环语句不是选择语句这是最典型的偷换概念。switch的case后面必须是常量表达式default可以放在任意位置但通常放最后break缺省会导致穿透fall-through这是笔试里常考的「输出结果」题根源。int score 85; switch (score / 10) { case 9: case 10: System.out.println(优秀); break; // 没有 break 会继续往下执行 case 8: System.out.println(良好); break; default: System.out.println(继续努力); }这段代码里case 9故意不写break让 90 分以上和 100 分都落到「优秀」分支这是穿透的正当用法但如果每个分支都漏写break输出就会连环打印。判断穿透题时从匹配的case开始逐行往下数遇到break或switch结束才停。3. 面向对象三大特性继承、多态与访问控制3.1 类、对象与构造方法声明一个类的对象标准写法是「类名 变量名 new 构造方法()」比如A a new A()。复习题里A a new int()错在int不是 A 的构造方法float A a错在类型和变量名顺序混乱。构造方法的名字必须与类名相同、没有返回类型连void都不能写它的作用是初始化成员变量。如果一个类没写任何构造方法编译器会自动补一个无参构造一旦手写了带参构造默认无参构造就不再自动生成这是很多「编译报错」题的隐藏原因。成员变量有默认值整型 0、浮点 0.0、boolean为false、引用类型为null。局部变量没有默认值必须先赋值再使用。复习题里t.y没显式赋值却参与运算结果按 0 算就是吃了成员变量默认值的红利。3.2 继承的边界与super继承的核心结论只有一句子类继承父类的非私有成员方法和状态私有成员不能被直接继承访问。选项里「继承所有方法和状态」错在忽略了private「只能继承 public」又收得太窄。protected成员在同包内和子类中可见这是包与继承交叉的考点。方法重写override要求方法名、参数列表、返回类型兼容访问权限不能比父类更严方法重载overload则是同名不同参。判断题常把两者混着考记法重写发生在父子类之间重载发生在同一个类里。3.3 多态、equals与的区别多态的底层是「父类引用指向子类对象运行时按实际类型调用重写方法」。但选择题更爱考equals和String s1 new String(xyz); String s2 new String(xyz); boolean b1 s1.equals(s2); // true比较内容 boolean b2 (s1 s2); // false比较引用地址 System.out.print(b1 b2);new两次会在堆上创建两个不同对象所以为falseString重写了equals按字符序列比较所以为true。如果换成字符串字面量String s1 xyz由于字符串常量池复用反而可能为true——这个反直觉点几乎年年出现。3.4 抽象类与接口的分工抽象类用abstract修饰可以有构造方法、成员变量和已实现的方法接口用interface定义成员默认public static final方法默认public abstractJava 8 后允许default方法。关键区别整理如下对比项抽象类接口关键字abstract classinterface继承/实现单继承extends多实现implements成员变量任意默认public static final构造方法有无方法体可有具体实现传统上全抽象复习题里「接口与抽象类是相同概念」错「实现接口必须实现所有方法」在传统语境下对有default方法后要加限定「接口之间不能继承」错接口可以extends多接口「一个类只能实现一个接口」也错。接口里的int k 10默认是public static final实现类可以直接用类名或接口名访问这是「i 10」那道题的答案来源。4. 修饰符、异常与常用类库易漏点集中营4.1 访问修饰符与static的禁忌四个访问级别从宽到窄publicprotected 默认包访问private。默认权限不写任何修饰符意味着「同一包内可见包外不可见」这是「让同类包访问、包外不能访问」题的标准答案。private只在本类可见protected在同包加子类可见。static方法属于类而不属于对象因此不能直接访问非静态成员实例变量和实例方法因为调用时可能根本没有对象存在。复习题里「static方法中能处理非static的属性」是错误说法这是最高频的翻车点之一。同理abstract不能与final并列修饰同一个类一个要求被继承一个禁止被继承abstract方法必须存在于abstract类中但abstract类里可以有private成员只是不能被继承访问。4.2 异常处理try、catch、finally的搭档关系finally只能和try单独搭配使用也可以和try-catch组合但不能单独出现也不能只跟catch。多重catch的顺序必须「子类异常在前父类异常在后」因为父类Exception能捕获所有子类异常放前面会让后面的catch变成不可达代码编译直接报错。所以Exception应最后一个列出。try { int[] arr new int[3]; arr[5] 1; // 数组越界 } catch (ArrayIndexOutOfBoundsException e) { System.out.println(越界); } catch (Exception e) { // 父类放最后 System.out.println(兜底); } finally { System.out.println(一定执行); // 除非 JVM 退出 }finally块通常用于释放资源即使try里return了也会执行System.exit除外。throw抛异常对象throws声明方法可能抛出的异常类型一字之差考法完全不同。4.3String、Scanner与常用包Scanner在java.util包String、Math、System在java.lang包自动导入不用import。图形界面类在java.awt和javax.swing。复习题里「Scanner定义在哪个包」答案是java.util这类题靠「包归属表」硬记最稳。String是不可变类每次拼接都会产生新对象StringBuilder适合频繁修改。equals比内容、比地址的规则在String上体现得最明显前面已经踩过一次这里再强调凡是看到两个new出来的字符串比先想「地址不同」。4.4 布局管理器与容器默认策略Panel缺省使用FlowLayout流式布局从左到右排列换行继续Frame缺省是BorderLayout东南西北中五个区域。GridLayout是网格均分CardLayout是卡片切换。这类题纯记忆但容易和「容器」混淆Panel是容器也是组件默认流式Frame是顶层窗口默认边界布局。记的时候把「面板流动、窗体边界」当口诀。5. 易错点复盘五条最容易翻车的规则易错点一默认访问权限的范围。为什么漏——很多人只记public/private把「不写修饰符」当成随便访问。怎么补——默认权限等于包访问同包可见、包外不可见遇到「同类包能访问、包外不能」直接选默认。易错点二static方法碰实例成员。为什么漏——写代码时在main里调实例方法报错却记不住原因。怎么补——static属于类实例成员属于对象没有对象就没有实例成员编译期直接拒绝。易错点三多重catch的顺序。为什么漏——凭感觉把Exception写前面图省事。怎么补——子类异常在前、父类在后否则后面的catch不可达编译报错。易错点四finally的搭档。为什么漏——把finally和catch单独配对。怎么补——finally只能跟try或try-catch单独出现是语法错误。易错点五与equals在字符串上的表现。为什么漏——字面量和new混用常量池复用让结果飘忽。怎么补——new出来的必是两个地址为false比内容一律用equals。6. 复习清单考前一周怎么过一遍把这份卷子的考点按「记忆型 / 辨析型 / 代码输出型」分三档复习节奏就不一样了。记忆型关键字清单、包归属、布局管理器默认策略、访问级别顺序适合考前三天集中过用默写代替阅读辨析型继承边界、接口与抽象类、static禁忌、catch顺序要拿错题反推规则每错一题就在旁边写一句「为什么错」代码输出型switch穿透、equals与、成员变量默认值、finally执行顺序必须手推执行过程不能只看答案。下面这张清单可以直接当自查表用模块必查点自检方式关键字哪些是、哪些不是默写 20 个关键字类型转换自动 vs 强制判断 5 个赋值是否丢精度继承私有成员不继承复述「非私有方法和状态」接口成员默认修饰符说出int k 10的完整修饰异常catch顺序、finally搭档手写一个多catch例子字符串与equals区分字面量与new布局Panel与Frame默认口诀「面板流动、窗体边界」我自己的习惯是考前把这份复习题的选择题遮住答案重做一遍凡是犹豫超过十秒的题不管最后选没选对都标记成「不稳」然后回到对应章节把规则抄一遍。血泪经验是很多题不是不会而是「以为会」——比如static方法访问实例属性看答案时觉得理所当然真到考场又手滑。从那以后我每次复习修饰符都强制走一遍「这个成员属于类还是属于对象」的判断再下笔。希望这份梳理能帮到你把零散的题感收成一张能带进考场的地图。本文还有配套的精品资源点击获取