全国计算机等级考试 · 复习系统

二级 Java 语言程序设计
科目 28 · 考点与真题

这不是一门只靠背语法就能过的考试——它考的是 Java 语言特点 + 数据类型与运算符 + 流程控制 + 面向对象(继承/多态/接口)+ 异常 + I/O + 线程 + 集合泛型 + GUI/Applet + 公共基础知识。 其中真正需要大量动手练习的是 面向对象 + 异常 + 数组字符串 + 操作题填空。 本页按 2025 年版官方大纲组织知识点,并收录 2021–2026 年真题与官方样题。

科目代码
28
考试时长
120分钟 · 上机
题型分值
40选择 + 60操作
考试环境
JDK 6.0+
NetBeans 教育考试版

选择题 40 分中含 公共基础知识 10 分,且选择题必须答对 20 题及以上才能获证(总分 ≥ 60 且选择 ≥ 20);操作题 60 分 = 基本操作 18 + 简单应用 24 + 综合应用 18,均为程序填空形式。

01语言特点与体系结构01 / 14
01

Java 语言特点与体系结构

理论 · 选择题为主

大纲要求掌握 Java 语言的特点、实现机制和体系结构:为什么 Java 能"一次编写、到处运行"?源文件如何变成可执行程序?JDK / JRE / JVM 之间是什么关系?

Java 语言的主要特点

  • 面向对象——封装、继承、多态,一切皆对象
  • 平台无关(可移植性)——编译生成字节码,由 JVM 解释执行,与操作系统/硬件"分开"
  • 安全性——无指针操作、自动内存管理(垃圾回收),Applet 沙箱机制
  • 健壮性——强类型、异常处理机制
  • 多线程——内置线程支持
  • 自动垃圾回收——程序员无需手工释放内存(Java 要求编程者管理内存 是错误说法)

实现机制:从源码到运行

Test.java 源文件
↓ javac 编译
Test.class 字节码
↓ java 启动 JVM
JVM 解释/即时编译执行
考点:Java 字节码与各操作系统及硬件之间的关系是"分开"的——字节码不针对任何具体平台,由不同平台上的 JVM 解释执行,这正是可移植性的来源(官方样题)。

体系结构:JDK / JRE / JVM

组成包含关系说明
JDK开发工具包包含 JRE + 编译器 javac + 调试工具,供开发使用
JRE运行环境包含 JVM + 类库,供运行 .class 程序使用
JVM虚拟机解释执行字节码,屏蔽底层平台差异

Java 程序结构(必背)

JAVA// 源文件名必须与 public 类名一致:Test.java
public class Test {
    public static void main(String[] args) {
        System.out.println("Hello Java");
    }
}
// 运行:javac Test.java  →  java Test(不带 .class 后缀)
高频判断题:① 一个源文件最多只能有一个 public 类;② 源文件名与 public 类名必须相同;③ Java 严格区分大小写;④ 源文件扩展名是 .java,编译后是 .class(不是 .jar / .html / .exe)。
02数据类型与运算符02 / 14
02

基本数据类型与运算符

选择题高频 · ★★★★★

大纲要求:变量和常量、基本数据类型及转换、包装类、运算符和表达式运算、字符串和数组、注释。这一章是全部选择题的基础,务必滚瓜烂熟。

标识符与关键字

  • 组成:字母 / 下划线 _ / 美元符 $ 开头,后续可含数字;不能以数字开头
  • 不能与关键字重名(如 classsuperdo);区分大小写
  • 命名约定:类名首字母大写(PascalCase);变量、方法名首字母小写(camelCase);常量名全大写(官方样题)
  • 合法:_object$123fieldname;不合法:3number#numberdosuper

8 种基本数据类型

类型字节范围/说明类型字节范围/说明
byte1−128 ~ 127float4单精度浮点(字面量加 f)
short2−2¹⁵ ~ 2¹⁵−1double8双精度浮点(默认小数类型)
int4默认整型char2Unicode 字符,可参与整数运算
long8长整型(字面量加 L)booleantrue / false,不能转为其他类型
考点:boolean 类型不能转换为任何其他基本数据类型(反之亦然)——官方样题原题;String引用类型,不是基本数据类型。

类型转换

JAVA// 自动转换:小范围 → 大范围(byte→short→int→long→float→double)
int a = 10;
double d = a;            // 自动,int 可赋给 double

// 强制转换:大范围 → 小范围,可能丢失精度
double x = 3.14;
int y = (int) x;       // y = 3(截断小数部分)

// char 可转为 int(取其 Unicode 码值)
int data = 'f' - 'a';  // data = 5

包装类(Wrapper Class)

Java 为 8 种基本类型提供包装类:Integer / Double / Boolean / Character / Byte / Short / Long / Float,用于把基本类型包装成对象;自动装箱/拆箱(JDK 5+)。

运算符与表达式(易错点集中地)

JAVA// 算术:+ - * / %(取余);整数除法结果仍为整数
System.out.println(100 % 3);    // 1
System.out.println(100 % 3.0);  // 1.0(float/double 参与 → 结果浮点)

// 关系:==  !=  >  <  >=  <=(= 是赋值,不是关系运算符)
// 逻辑:&&  ||  !   短路求值
// 位运算:&  |  ^  ~  <<  >>  >>>
System.out.println(8 >> 1);      // 4(右移一位,相当于整除 2)

// 三元:条件 ? 表达式1 : 表达式2
System.out.println(3 > 2 ? 4 : 5);  // 4

// 扩展赋值:+=  -=  *=  /=  %=(是表达式语句)
int b = 5;  b *= 2;     // b = 10
易错点:① 字符串拼接 "xyz" + 3 + 4 + 5 结果是 "xyz345"(从左到右先拼字符串);② b#a; 不是合法表达式语句;③ 运算符优先级中 ++ / -- 最高,?: 是唯一三元运算符,优先级低于多数运算符。

进制字面量

  • 八进制:以 0 开头,如 0144(十进制 100)
  • 十六进制:以 0X / 0x 开头,如 0XA6;科学计数法:-1E3 = −1000.0
03流程控制03 / 14
03

Java 基本语句与流程控制

选择+操作双高频 · ★★★★★

大纲要求:选择语句、循环语句、跳转语句、表达式语句。操作题的程序填空大量考查循环与分支的正确写法。

分支语句

JAVAif (score >= 60) {
    System.out.println("及格");
} else if (score >= 90) {
    System.out.println("优秀");
} else {
    System.out.println("不及格");
}

switch (grade) {
    case 'A': System.out.println("优秀"); break;
    case 'B': System.out.println("良好"); break;
    default:  System.out.println("其他");
}

循环语句(while / do-while / for)

JAVAwhile (condition) { ... }        // 先判断后执行,可能一次都不执行
do { ... } while (condition);     // 先执行后判断,至少执行一次
for (int i = 0; i < 10; i++) { ... }   // 初始化; 条件; 步进
for (;;) { ... }                    // 无限循环(合法!)

跳转语句

语句作用
break跳出当前循环或 switch(跳转语句!官方样题)
continue跳过本次循环剩余语句,进入下一次迭代
return结束方法并返回结果

嵌套循环计算(考试最爱)

JAVAint s = 0;
for (int i = 1; i < 5; i++)          // i = 1,2,3,4
    for (int j = 1; j <= i; j++)
        s = s + j;
System.out.println(s);   // 1 + (1+2) + (1+2+3) + (1+2+3+4) = 20
技巧:遇到嵌套循环题,先固定外层变量、逐层累加,把内层求和写成三角数公式 1+2+…+n = n(n+1)/2 可快速验证。
04面向对象基础04 / 14
04

面向对象基础:类、对象、构造方法

核心中的核心 · ★★★★★

面向对象是 Java 的灵魂。大纲要求:OOP 基本概念和特征、类的基本组成、对象的生成/使用/删除、包与接口、常用类。

类与对象

JAVAclass Student {
    // 属性(成员变量 / 字段)
    private String name;
    private int age;

    // 构造方法:与类同名、无返回值(也不写 void)
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // 方法(行为)
    void show() { System.out.println(name + "," + age); }
}

// 创建对象:new 调用构造方法,返回对象引用
Student s = new Student("张三", 20);
s.show();

构造方法四大规定(官方样题)

  • 构造方法名与类名必须相同
  • 没有返回值,且不用 void 声明
  • 可以重载(多个不同参数的构造方法)
  • 只能通过 new 自动调用(不能手动调用)

this 与 super

JAVAclass Animal {
    public Animal() { System.out.print("animal"); }
    public Animal(int n) {
        this();                    // this() 调用本类无参构造
        System.out.print("=" + n);
    }
}
class Dog extends Animal {
    public Dog() {
        super(12);                 // super() 调用父类构造
        System.out.println(" dog");
    }
}
// new Dog() 输出:animal=12 dog(先父类后子类)

封装与访问控制

修饰符同类同包子类(不同包)所有类
private
默认(包访问)
protected
public
记忆:访问范围从小到大 private → 默认 → protectedpublic子类不能访问父类的 private 成员(官方样题:子类不能进行的操作是"访问父类私有属性")。 封装 = private 属性 + public 的 getter/setter。

static 与 final 关键字

JAVAclass Util {
    static int count = 0;          // 静态变量:属于类,所有对象共享
    static void run() { ... }     // 静态方法:属于类,不能直接使用 this
}
// final 类不能被继承;final 方法不能覆盖;final 变量是常量
final class String { }          // String、System 都是 final 类
final double PI = 3.14159;     // 常量:全大写命名(官方样题)
05继承·多态·接口05 / 14
05

继承、多态与接口

选择+操作核心 · ★★★★★

大纲要求:继承、多态和高级类特性、覆盖与重载、抽象类、接口、内部类、枚举。操作题的类设计填空集中在这块。

继承(extends)

JAVAclass Animal {
    void sound() { System.out.println("..."); }
}
class Dog extends Animal {
    @Override
    void sound() { System.out.println("汪"); }   // 覆盖(重写)
    void bark() { System.out.println("汪汪"); }  // 子类新增方法
}
  • 覆盖(Override):子类重新实现父类方法,方法签名一致、访问权限不能缩小、可用 @Override 检查
  • 重载(Overload):同一个类中方法名相同,参数个数/类型/顺序不同;不能只靠返回类型区分
  • 子类可覆盖父类方法、增加方法、增加属性;不能访问父类 private 成员
  • Java 单继承:一个类只能直接继承一个父类

多态:父类引用指向子类对象

JAVAAnimal a = new Dog();    // 向上转型:父类引用指向子类对象
a.sound();                     // 运行期动态绑定,调用 Dog 的 sound()
// 子类对象可以作为父类对象使用(真题原句)

抽象类与接口(高频对比考点)

对比抽象类 abstract class接口 interface
声明abstract class Animalinterface Flyable
方法可有抽象方法 + 普通方法方法隐式为 public abstract(JDK8+ 可有 default/static)
字段可定义成员变量隐式为 public static final 常量
实例化不能直接 new不能直接 new
使用子类 extends 继承(单继承)implements 实现,可多实现
JAVA// 抽象类:不能实例化,抽象方法子类必须实现
abstract class Shape {
    abstract double area();          // 抽象方法,无方法体
    void info() { }                   // 普通方法可以有方法体
}
class Circle extends Shape {
    double area() { return 0; }   // 必须实现抽象方法
}

// 接口:implements 实现,一个类可实现多个接口
interface Flyable {
    void fly();
}
class Bird implements Flyable {
    public void fly() { }          // 实现方法必须 public
}
易错:抽象方法不能有方法体 {};普通类不能声明抽象方法;接口中的方法若写成带方法体(非 default)则编译错误。
06字符串与数组06 / 14
06

字符串与数组

选择+操作核心 · ★★★★★

大纲要求:字符串和数组的创建、初始化与引用。String 的常用方法与"不可变"特性、数组下标与越界是必考点。

String 字符串

JAVAString s1 = "123";                 // 字面量,常量池
String s3 = new String("123");    // new 出来的新对象
s1 == s3          // false(引用不同)  s1 == s2(同字面量)→ true
s1.equals(s3)     // true(内容相同)

// String 是不可变对象;StringBuffer / StringBuilder 可变
String s = "Hello";
s.charAt(1)                 // 'e'
s.substring(1, 3)           // "el"(含头不含尾)
s.indexOf("l")               // 2
s.toUpperCase()             // "HELLO"
String.valueOf(123)          // "123" 转字符串
// append() 是 StringBuffer/StringBuilder 的方法,不是 String 的!(官方样题)

数组(一维 / 多维)

JAVAint[] x = {0, 1, 2, 3};        // 声明+初始化
int[] y = new int[5];            // 创建指定长度数组,默认值 0
x.length                      // 4(length 是属性不是方法)
x[0]                          // 访问下标 0 的元素
int[][] m = new int[3][4];     // 二维数组 3 行 4 列
// 下标越界:ArrayIndexOutOfBoundsException(运行时异常)
// 数组大小固定,不能动态扩展(真题判断题:×错)
真题高频:数组与异常组合——x[i+2] / x[i]x[i]==0 时抛出 ArithmeticException(除零),下标越界时抛 ArrayIndexOutOfBoundsException(官方样题 15 题)。
07异常与断言07 / 14
07

异常处理与断言

操作题综合应用核心 · ★★★★★

大纲要求:异常处理(捕获、声明抛出、自定义异常)和断言概念。综合应用题通常就是"输入两个整数做除法 + 异常处理 + GUI 显示结果"。

异常体系

Throwable(所有可抛出对象)
Error(系统级,如 OutOfMemoryError)
Exception(可处理)→ RuntimeException(运行时)与其他(受检)
  • 常见运行时异常:ArithmeticException(除零)、NullPointerException(空指针)、ArrayIndexOutOfBoundsException(下标越界)、NumberFormatException(数字格式)
  • 受检异常:IOException 等,必须捕获或在方法签名 throws 声明
  • 自定义异常:继承 Exception(官方样题:父类可以是 Exception)

try-catch-finally 与抛出

JAVAtry {
    int r = 10 / 0;                // 抛出 ArithmeticException
} catch (ArithmeticException e) {      // 子类异常在前
    System.out.println("除零错误");
} catch (Exception e) {               // 父类异常在后
    System.out.println("其他错误");
} finally {                            // 无论是否异常都执行
    System.out.println("收尾");
}

// 声明抛出:方法可能抛出异常但不处理,用 throws 交给调用者
public double quotient(int a, int b) throws Exception {
    if (b == 0) throw new Exception();   // throw 手动抛出异常对象
    return a / b;
}
规则:① 多重 catch 必须子类在前、父类在后;② finally 无论是否异常都会执行(真题考点);③ throw 抛出异常对象,throws 声明可能抛出的异常。

断言 assert

JAVAassert a > 0 : "a 必须为正数";   // 条件为 false 时抛出 AssertionError
// 运行需加参数启用:java -ea Test(默认不启用)
08输入输出流与文件操作08 / 14
08

输入输出流与文件操作

选择+操作高频 · ★★★★

大纲要求:输入输出流类(FileInputStream / FileOutputStream / BufferedReader / BufferedWriter / File 类)、标准输入输出和基本用户界面 I/O。

流的体系

类别字节流(8 位)字符流(16 位,处理文本)
输入InputStream / FileInputStreamReader / FileReader / BufferedReader
输出OutputStream / FileOutputStreamWriter / FileWriter / BufferedWriter
官方样题:字节输入/输出流都继承自 InputStreamOutputStream。 读取文件常用套路:BufferedReader br = new BufferedReader(new FileReader("a.txt"));; 读到文件末尾时 read() 返回 −1

File 类与随机访问

JAVAFile dir = new File("d:/test");
dir.isDirectory()            // true
String[] names = dir.list();   // 返回目录下的文件名数组(官方样题:得到文件名用 File)

// RandomAccessFile:支持在文件中随机位置读写
RandomAccessFile raf = new RandomAccessFile("d:/a.dat", "rw");
raf.seek(1024);               // 定位到任意字节位置再读写
09线程与同步09 / 14
09

线程与同步

选择题高频 · ★★★★

大纲要求:线程的概念、线程的基本控制(Thread / Runnable)、同步机制(synchronized / wait / notify)。

创建线程的两种方式

JAVA// 方式一:继承 Thread 类,重写 run()
class T1 extends Thread {
    public void run() { System.out.println("T1"); }
}

// 方式二:实现 Runnable 接口(推荐,避免单继承限制)
class T2 implements Runnable {
    public void run() { System.out.println("T2"); }
}

// 启动线程必须调用 start(),而不是直接调 run()
new T1().start();
new Thread(new T2()).start();
官方样题:重写 run() 时方法签名必须完全一致——若写成 public void run(Thread t),只是重载而非覆盖,程序编译错误(Thread 的 run() 无参)。

线程生命周期与常用方法

新建 new
↓ start()
就绪
↓ 获得 CPU
运行
↓ sleep/wait/IO
阻塞
↓ 唤醒/就绪
终止(run 结束)
方法作用是否改变状态
start()启动线程,进入就绪改变
sleep()当前线程睡眠指定毫秒一定改变(进入阻塞)
yield()让出 CPU,回就绪队列不一定
wait()释放锁并等待(配合 notify)改变
isAlive()测试线程是否存活不改变状态(官方样题)

同步 synchronized

JAVAclass Stack {
    synchronized void push(int v) { ... }   // 加锁:同一时刻只有一个线程进入
}
// 多线程访问共享数据时,顺序不确定可能导致结果不确定(官方样题)
// 线程优先级范围:1 ~ 10(Thread.MIN_PRIORITY=1, MAX_PRIORITY=10)
10集合框架与泛型10 / 14
10

集合框架与泛型

选择题中频 · ★★★

大纲(近年)要求了解集合框架的基本使用:List / Set / Map 的特点与常用操作、泛型的作用。

三大接口与实现类

接口实现类特点
ListArrayList / LinkedList有序可重复,可按索引访问
SetHashSet / TreeSet无序,元素不重复
MapHashMap / TreeMap键值对,键唯一、值可重复
JAVAArrayList<String> list = new ArrayList<>();  // 泛型:编译期类型安全
list.add("A");  list.add("B");
Collections.min(list);   Collections.max(list);   // 集合最值(真题)
Collections.sort(list);                          // 排序

HashMap<String, Integer> m = new HashMap<>();
m.put("张三", 90);   m.get("张三");          // 90
记忆:List=有序可重复;Set=不重复;Map=键值对、键唯一。泛型 <T> 在编译期检查类型,避免运行时 ClassCastException。
11GUI 与 Applet11 / 14
11

图形用户界面与 Applet

选择题高频 · ★★★★

大纲要求:Applet 的概念与生命周期、常用组件与布局管理器、事件处理、paint 绘图。综合应用题通常就是"GUI + 事件 + 业务逻辑"。

AWT 与 Swing

区别AWTSwing
重量级组件依赖操作系统,速度较快轻量级(J 开头),纯 Java 实现
常用类Frame / Panel / ButtonJFrame / JPanel / JButton / JTextField / JLabel / JMenu / JOptionPane

判断题考点:Panel 属于 AWT 组件,不是 Swing 组件(官方样题)。

布局管理器

布局特点
FlowLayout从左到右依次排列,放不下换行
BorderLayout东南西北中五区,Frame 的默认布局;未指定区域默认放在 Center
GridLayout等分网格
CardLayout卡片式叠放,一次显示一张

事件处理三要素 + 一个回调

JAVA// 三要素:事件源(按钮)、事件对象(ActionEvent)、监听器(ActionListener)
JButton btn = new JButton("确定");
btn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("点击");
    }
});   // 匿名内部类常用于事件处理(真题考点)

// 窗口事件:用适配器 WindowAdapter(只需覆盖需要的回调)
f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) { System.exit(0); }
});

Applet 生命周期(4 个方法)

init() 初始化
start() 启动
stop() 停止
destroy() 销毁
  • Applet 生命周期方法共 4 个:init / start / stop / destroy(官方样题)
  • 浏览器可用 <param name="..." value="..."> 向 Applet 传参,Applet 用 getParameter("...") 接收
12公共基础知识12 / 14
12

公共基础知识(10 分)

性价比最高 · ★★★★★

选择题前 10 道是公共基础知识(数据结构、程序设计基础、软件工程、数据库),题目相对固定,背熟考点就能拿分,是过关的"保底分"。

数据结构

结构存取方式类别
先进后出(FILO),只在一端操作线性结构
队列先进先出(FIFO)线性结构
线性表 / 链表顺序或链式存储线性结构
二叉树 / 树 / 图分支/网状关系非线性结构
  • 二叉树性质:叶子结点数 N0 = N2 + 1(度为 2 的结点数 + 1);第 k 层最多 2k−1 个结点;深度为 h 的二叉树最多 2h−1 个结点
  • 满二叉树 / 完全二叉树:可用数组顺序存储

算法与程序设计

  • 算法复杂度:时间复杂度(执行时间随规模增长)与空间复杂度(存储空间)
  • 结构化程序设计三原则:自顶向下、逐步求精、模块化
  • 面向对象方法:对象、类、实例、消息、继承、多态

软件工程

  • 软件生命周期:计划 → 需求分析 → 设计 → 编码 → 测试 → 运行维护
  • 数据流图(DFD)用于需求分析阶段(真题)
  • 模块划分准则:高内聚、低耦合(真题)
  • 测试:白盒(逻辑路径)与黑盒(功能/等价类、边界值)

数据库

  • 数据库系统核心:数据库管理系统 DBMS(真题)
  • E-R 图:实体用矩形、属性用椭圆、联系用菱形(真题)
  • 关系模型:二维表;主键唯一标识一条记录
13备考优先级13 / 14
13

备考优先级与复习路线

策略

时间有限时按下面的优先级投入:先保选择 20 题过关线,再攻操作题填空题。

优先级内容理由
★★★★★类与对象、继承/多态/接口、异常、字符串数组、流程控制选择题 + 操作题双核心,填空几乎必考
★★★★数据类型与运算符、I/O、线程、GUI/Applet选择题高频;I/O 和 GUI 常在操作题中当壳
★★★★公共基础知识 10 分记忆性内容,背熟即得分,成本最低
★★★Java 特点与体系、集合泛型以选择题为主,理解概念即可

操作题填空套路

  • 基本操作(18 分):框架补全——类声明、main 方法、创建对象、调用方法、GUI 组件实例化
  • 简单应用(24 分):补业务方法——循环/分支、String 处理、数组操作、数值计算
  • 综合应用(18 分):异常处理 + GUI + 计算组合,多 try-catch 与事件回调填空
  • 先读 //Found 上方完整代码语义,再写填空;注意大小写、分号、括号配对
14真题题库 2021–202614 / 14
14

真题题库(2021–2026)

点击选项即判分

题库分六个年份标签。2021–2024 为公开网络题库的历年真题(考生回忆/整理版);2025 为中国教育考试网发布的官方样题(依据 2025 年版大纲,4 月发布);2026 为按 2025 大纲编写的模拟题。 点击选项立即判分,自动显示参考答案与解析。

共 39 道选择题 + 3 道操作题 · 来源:中国教育考试网官方样题 与网络公开题库(历年考生回忆)
2021选择题历年笔试真题
下列数据结构中,属于非线性结构的是?
参考答案:C。栈、队列(含循环、链式实现)都是线性结构;二叉树、树、图是非线性结构。
2021选择题历年笔试真题
下列数据结构中,按"先进后出"原则存取数据的是?
参考答案:B。栈是先进后出(FILO),队列是先进先出(FIFO)。
2021选择题历年笔试真题
在 E-R 图中,用来表示实体之间联系的图形是?
参考答案:C。E-R 图中实体用矩形、属性用椭圆、联系用菱形。
2021选择题历年笔试真题
软件设计中划分模块的一个准则是?
参考答案:B。模块划分追求"高内聚、低耦合":模块内部联系紧密、模块之间联系尽量少。
2022选择题真题精选
Java 中 Frame 组件默认的布局管理器是?
参考答案:B。Frame 默认 BorderLayout(东南西北中);Panel 默认 FlowLayout。
2022选择题真题精选
保证 Java 语言"可移植性"的特征是?
参考答案:D。字节码由 JVM 解释执行,与具体平台无关,实现"一次编写、到处运行"。
2022选择题真题精选
下列数字中,表示八进制整数的是?
参考答案:D。以 0 开头是八进制(0144 = 十进制 100);0X 开头是十六进制;E 是科学计数法。
2022选择题真题精选
执行 System.out.println(100 % 3); System.out.println(100 % 3.0); 的输出是?
参考答案:B。整数取余得整数 1;double 参与运算后结果为浮点 1.0。
2023选择题真题精选
关于 Java 源文件与类名,正确的说法是?
参考答案:B。一个源文件最多一个 public 类,且文件名与该类名一致,扩展名 .java。
2023选择题真题精选
按操作数的数目划分,运算符 "?:" 属于?
参考答案:A。条件运算符 ?: 需要三个操作数,是 Java 中唯一的三元运算符。
2023选择题真题精选
已知 String s1="123"; String s2="123"; String s3=new String("123");,则 s1==s2s1==s3 的值分别是?
参考答案:C。s1、s2 指向常量池中同一对象(== 为 true);new String 创建新对象,s1==s3 为 false。比较内容应使用 equals()。
2023选择题真题精选
Applet 生命周期相关方法的个数是?
参考答案:A。Applet 生命周期方法为 init()、start()、stop()、destroy() 共 4 个。
2024选择题题库精选
Java 应用程序主类 main 方法的返回类型是?
参考答案:D。入口签名固定:public static void main(String[] args)。
2024选择题题库精选
下列选项中,可以作为 Java 合法标识符的是?
参考答案:A。super 是关键字;标识符不能以数字或 # 开头。
2024选择题题库精选
下列关于线程调度的叙述中,错误的是?
参考答案:D。线程调度由系统决定,相同优先级线程的调度不保证分时轮转,故 D 的说法错误;sleep() 使低优先级线程有机会运行,yield() 只让同优先级线程获得机会,高优先级线程可抢占 CPU。
2024选择题题库精选
下列代码中,内部类(匿名类)的主要用途是?
btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ... } });
参考答案:B。匿名内部类在此实现 ActionListener 接口并完成事件处理回调,是 GUI 编程的典型用法。
2025选择题官方样题 01
下列有关 Java 标识符命名原则的叙述中,正确的是?
参考答案:C。类名、接口名首字母大写;变量与方法名首字母小写;常量名全部大写。
2025选择题官方样题 03
下列关于 boolean 类型的叙述中,正确的是?
参考答案:D。boolean 只有 true/false,不能与其他基本类型互相转换。
2025选择题官方样题 04
执行 System.out.println(3 > 2 ? 4 : 5); 的运行结果是?
参考答案:C。3>2 为 true,取第一个表达式 4。
2025选择题官方样题 06
String s = "xyz"; int x=3, y=4, z=5;,则 System.out.println(s + x + y + z) 的输出是?
参考答案:B。从左到右,遇到字符串后 + 变为字符串拼接,结果为 "xyz345"。
2025选择题官方样题 07
执行 char k='a', p='f'; int data = p - k; System.out.println(data); 的结果是?
参考答案:A。char 参与运算自动提升为 int(Unicode 码值),'f'(102) − 'a'(97) = 5。
2025选择题官方样题 08
执行以下代码,若输出"季军",则 x 的取值范围是?
if (x == 0) System.out.println("冠军"); else if (x > -3) System.out.println("亚军"); else System.out.println("季军");
参考答案:D。只有 x==0 输出冠军、x>-3(且非 0)输出亚军,其余(x ≤ −3)输出季军。
2025选择题官方样题 09
执行下列循环后,s 的值是?
int s=0; for(int i=1;i<5;i++) for(int j=1;j<=i;j++) s+=j;
参考答案:D。s = 1 + (1+2) + (1+2+3) + (1+2+3+4) = 1+3+6+10 = 20。
2025选择题官方样题 10
下列语句中,属于跳转语句的是?
参考答案:A。跳转语句是 break、continue、return;try/catch/finally 属于异常处理语句。
2025选择题官方样题 11
下列关于构造方法的叙述中,错误的是?
参考答案:C。构造方法可以重载(同名不同参数),C 说法错误。
2025选择题官方样题 12
设 Animal 的构造方法输出 "animal"、"=n",Dog 的构造方法调用 super(12) 并输出 " dog"。执行 new Dog() 的输出是?
参考答案:A。创建子类对象时先调用父类构造:Animal() 输出 "animal",Animal(int) 输出 "=12",再执行子类构造输出 " dog"。
2025选择题官方样题 13
子类继承父类后,下列操作中不能进行的是?
参考答案:D。private 成员仅本类可见,子类无法直接访问父类私有属性。
2025选择题官方样题 14
下列 Java 代码中,能通过编译的是?
参考答案:B。抽象类可以包含带方法体的普通方法;抽象方法不能有方法体(A、D 错);非抽象类不能声明抽象方法(C 错)。
2025选择题官方样题 16
用户自定义异常类时,其父类可以是?
参考答案:C。自定义异常通常继承 Exception(或其子类),使其成为可捕获、可处理的异常。
2025选择题官方样题 17
下列方法中,不属于 String 类的方法的是?
参考答案:D。append() 是 StringBuffer/StringBuilder 的方法;String 是不可变类,没有 append。
2025选择题官方样题 20
Java 的字节输入流和字节输出流分别继承自?
参考答案:A。字节流顶层是 InputStream/OutputStream;字符流顶层是 Reader/Writer。
2025选择题官方样题 26
下列关于线程的叙述中,正确的是?
参考答案:C。线程调度由系统决定,并发顺序不确定,访问共享数据可能产生不确定结果;建立线程还可实现 Runnable。
2025选择题官方样题 27
Thread 子类中声明 public void run(Thread t),程序编译运行的结果是?
参考答案:D。run() 重写签名必须是无参的;带参数只是重载,Thread 的 run() 未被覆盖,程序不满足抽象方法约束,编译错误。
2025选择题官方样题 28
下列方法中,一定使调用它的线程改变生命周期状态的是?
参考答案:B。sleep() 使当前线程必然进入阻塞(睡眠);notify/yield 不保证改变状态,isAlive 只是查询。
2025选择题官方样题 29
多线程访问共享的栈(Stack),对 push 方法进行互斥保护应使用的关键字是?
参考答案:A。synchronized 修饰方法或代码块实现互斥同步,保证同一时刻只有一个线程执行。
2026选择题模拟题
下列类型中,不属于 Java 基本数据类型的是?
参考答案:B。String 是引用类型(类),基本类型只有 byte/short/int/long/float/double/char/boolean 八种。
2026选择题模拟题
下列关于 finally 块的叙述中,正确的是?
参考答案:B。finally 块无论 try 是否抛出异常都会执行,通常用于释放资源。
2026选择题模拟题
下列创建线程的方式中,正确的是?
参考答案:A。两种正确方式:继承 Thread 重写 run(),或实现 Runnable 实现 run();start() 用来启动线程而非重写。
2026选择题模拟题
栈这种数据结构的特点是?
参考答案:B。栈只在一端(栈顶)插入和删除,后进先出(LIFO)。
2025操作题·基本操作考生回忆版
程序框架已给出,请补全:定义方法 factorial(int n) 返回 n 的阶乘,在 main 中调用并输出 factorial(6) 的结果。
参考答案(程序填空)
JAVApublic static int factorial(int n) {
    int f = 1;
    for (int i = 1; i <= n; i++)
        f *= i;                  // 填空处:f = f * i
    return f;
}
public static void main(String[] args) {
    System.out.println(factorial(6));   // 输出 720
}
2025操作题·简单应用考生回忆版
从键盘输入两个整数 a、b,输出它们的和、差、积、商(整除)。补全 main 中的输入与计算部分。
参考答案(程序填空)
JAVABufferedReader br = new BufferedReader(
    new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());   // 填空:读取第一行并转整数
int b = Integer.parseInt(br.readLine());
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);                    // 整除;注意除零需异常处理
2025操作题·综合应用考生回忆版
输入两个整数并做除法:输入为 0 或格式错误时用异常处理捕获,输出错误提示;正常时输出商。补全 try-catch 与除法语句。
参考答案(程序填空)
JAVAtry {
    int a = Integer.parseInt(args[0]);      // 填空 1:字符串转整数
    int b = Integer.parseInt(args[1]);
    System.out.println("a / b = " + a / b);
} catch (ArithmeticException e) {            // 填空 2:捕获除零异常
    System.out.println("除数不能为 0");
} catch (NumberFormatException e) {          // 填空 3:捕获格式异常
    System.out.println("输入格式错误");
}