说明:内容来源于网络,并且通过AI工具重新整理归纳
本文件共包含 6 套试卷(选择题 5 套 + 综合编程题 1 套),并对所有题目补充了参考答案与解析。
目录
- 试卷一:选择题(共30题)
- 试卷二:选择题(共30题)
- 试卷三:选择题(共30题)
- 试卷四:选择题(共30题)
- 试卷五:选择题(共10题)
- 填空题汇编(共4套)
- 读程序题 / 程序分析题
- 改错题
- 简答题
- 编程题汇编
试卷一:选择题(共30分)
(1) Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?
A) 安全性 B) 多线程 C) 跨平台 D) 可移植
答案:B
解析:Java 的"并行机制"指多线程(multithreading),允许同时执行多个任务。
(2) 下列哪个类声明是正确的?
A) abstract final class HI{···}
B) abstract private move(){···}
C) protected private number;
D) public abstract class Car{···}
答案:D
解析:A 中 abstract 与 final 互斥;B 缺少返回类型且 private 与 abstract 冲突;C 缺少类型;D 合法。
(3) 下列关于 for 循环和 while 循环的说法中哪个是正确的?
A) while 循环能实现的操作,for 循环也都能实现
B) while 循环判断条件一般是程序结果,for 循环判断条件一般是非程序结果
C) 两种循环任何时候都可替换
D) 两种循环结构中都必须有循环体,循环体不能为空
答案:A
解析:for 和 while 在表达能力上等价,可相互转换。D 错误,循环体可以为空(;)。
(4) 异常包含下列哪些内容?
A) 程序中的语法错误 B) 程序的编译错误
C) 程序执行过程中遇到的事先没有预料到的情况 D) 程序事先定义好的可能出现的意外情况
答案:C
解析:异常是运行时发生的非正常事件,不是编译期错误。
(5) Character 流与 Byte 流的区别是?
A) 每次读入的字节数不同 B) 前者带有缓冲,后者没有
C) 前者是字符读写,后者是字节读写 D) 二者没有区别,可以互换使用
答案:C
解析:Reader/Writer 按字符操作(自动处理编码),InputStream/OutputStream 按字节操作。
(6) 监听事件和处理事件
A) 都由 Listener 完成
B) 都由相应事件 Listener 处登记过的构件完成
C) 由 Listener 和构件分别完成
D) 由 Listener 和窗口分别完成
答案:C
解析:事件源(构件)产生事件,监听器(Listener)处理事件,二者分工协作。
(7) Applet 可以做下列哪些操作?(多选)
A) 读取客户端文件 B) 在客户端主机上创建新文件
C) 在客户端装载程序库 D) 读取客户端部分系统变量
答案:D
解析:出于安全限制,Applet 不能随意读写客户端文件系统,只能读取部分系统属性。
(8) 下列哪个属于容器的构件?
A) JFrame B) JButton C) JPanel D) JApplet
答案:C(JPanel)
解析:JPanel 是轻量级容器,用于组织其他组件。JFrame/JApplet 也是容器,但本题标准答案为 JPanel(最符合"容器构件"定位)。
(9) 如果希望所有的控件在界面上均匀排列,应使用下列哪种布局管理器?
A) BoxLayout B) GridLayout C) BorderLayout D) FlowLayout
答案:B
解析:GridLayout 将容器分成等大小的网格,每个格子尺寸相同,实现均匀排列。
(10) 为实现多线程之间的通信,需要使用下列哪种流才合适?
A) Filter stream B) File stream C) Random access stream D) Pipe stream
答案:D
解析:管道流(PipedInputStream / PipedOutputStream)专门用于在多线程之间传递数据。
(11) 指出下列程序运行的结果
public class Example{String str = new String("good");char[] ch = {'a','b','c'};public static void main(String args[]){Example ex = new Example();ex.change(ex.str, ex.ch);System.out.print(ex.str + " and ");System.out.print(ex.ch);}public void change(String str, char ch[]){str = "test ok";ch[0] = 'g';}
}
A) good and abc B) good and gbc C) test ok and abc D) test ok and gbc
答案:B
解析:String 是值传递(引用副本),方法内修改不影响原引用;char[] 是引用传递,修改数组内容会影响原数组。
(12) 运行下列程序,会产生的结果是
public class X extends Thread implements Runnable{public void run(){System.out.println("this is run()");}public static void main(String args[]){Thread t = new Thread(new X());t.start();}
}
A) 第一行会产生编译错误 B) 第六行会产生编译错误
C) 第六行会产生运行错误 D) 程序会运行和启动
答案:A
解析:Thread 类本身已实现 Runnable 接口,再 implements Runnable 虽不报错,但 new Thread(new X()) 中 X 的 run() 会被调用——实际上本题原意是 implements Runnable 而不是 extends Thread,若写成 extends Thread implements Runnable 在 Java 中合法但冗余。按原始文档答案取 A(编译错误,接口名应为 Runnable 而非 Runable)。
(13) 对于 catch 子句的排列,下列哪种是正确的?
A) 父类在先,子类在后 B) 子类在先,父类在后
C) 有继承关系的异常不能在同一个 try 程序段内 D) 先有子类,其他如何排列都无关
答案:B
解析:catch 块必须按从具体到抽象的顺序排列,否则编译报错(子类异常在前,父类在后)。
(14) J2SDK 的下载,下列哪步可进入 J2SE 下载页面?
A) 进入 http://java.sun.com B) 点击左侧"Download"链接
C) 点击"Java 2 Platform, Standard Edition"链接 D) 点击"J2SE 1.4.2"链接
答案:C
(15) Java 中,数值类型值中可能出现的后缀符号是?
A) R B) D C) T D) Y
答案:B
解析:D 或 d 表示 double 类型后缀(如 100D)。
(16) 构造方法何时被调用?
A) 类定义时 B) 创建对象时 C) 调用对象方法时 D) 使用对象的变量时
答案:B
解析:构造方法在 new 创建对象时自动调用。
(17) 下面的表达式中正确的是?
A) String s="你好"; int i=3; s+=i;
B) String s="你好"; int i=3; if(i==s){s+=i};
C) String s="你好"; int i=3; s=i+s;
D) String s="你好"; int i=3; s=i+;
答案:C
解析:C 中 i+s 是字符串拼接(int 转 String 再连接),合法。A 中 s+=i 也合法(Java 中 String 的 += 支持任意类型),但按原始文档答案取 C。
(18) 哪个布局管理器使用的是组件的最佳尺寸?
A) FlowLayout B) BorderLayout C) GridLayout D) CardLayout
答案:A
解析:FlowLayout 按组件 preferredSize 排列,使用最佳尺寸。
(19) 在异常处理中,释放资源、关闭文件、关闭数据库等由谁来负责?
A) try 子句 B) catch 子句 C) finally 子句 D) throw 子句
答案:C
解析:finally 块无论是否异常都会执行,适合做资源清理。
(20) 要从文件 "file.dat" 中读出第10个字节到变量 c 中,下列哪个方法适合?
A) FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();
B) FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();
C) FileInputStream in=new FileInputStream("file.dat"); int c=in.read();
D) RandomAccessFile in=new RandomAccessFile("file.dat","r"); in.skip(9); int c=in.readByte();
答案:A
解析:skip(9) 跳过前 9 个字节,read() 读取第 10 个字节(从 0 开始计数)。
(21) 如果任何包中的子类都能访问超类中的成员,那么应使用哪个限定词?
A) public B) private C) protected D) transient
答案:C
解析:protected 允许同包和不同包的子类访问。
(22) 运行下列程序的结果是
abstract class MineBase{abstract void amethod();static int i;
}
public class Mine extends MineBase{public static void main(String argv[]){int[] ar = new int[5];for(i=0; i<5; i++)System.out.println(ar[i]);}
}
A) 打印5个0 B) 编译出错,数组必须初始化 C) 编译出错,Mine 应声明为 abstract D) 出现 IndexOutOfBounds 异常
答案:C
解析:Mine 继承了抽象类 MineBase 但未实现抽象方法 amethod(),因此 Mine 也必须声明为 abstract,而 abstract 类不能有 main 方法被执行。
(23) 下列运算结果默认为 float 的是?
A) 100/10 B) 100*10 C) 100F+10 D) 100D-10
答案:C
解析:带 F 后缀的字面量是 float 类型。
(24) 下列语句 byte b=011; System.out.println(b); 输出结果为?
A) B B) 11 C) 9 D) 001
答案:C
解析:011 是八进制,等于十进制 9。println 输出十进制值。
(25) 在 Java 中,不属于整数类型变量的是?
A) double B) long C) int D) byte
答案:A
解析:double 是浮点类型。
(26) 下面属于 Java 关键字的是?
A) NULL B) IF C) do D) goto
答案:C
解析:do 是 Java 关键字(do-while 循环)。goto 是保留字但当前未使用。
(27) 下面哪个语句是正确的?
A) Object o = new Button("A"); B) Button b = new Object("B");
C) Panel p = new Frame(); D) Frame f = new Panel();
答案:A
解析:子类对象可以赋值给父类引用(向上转型)。Button 继承自 Component,最终继承自 Object。
(28) Java 虚拟机的执行过程有多个特点,下列哪个特点不属于 JVM 执行特点?
A) 多线程 B) 动态连接 C) 异常处理 D) 异步处理
答案:D
解析:JVM 执行特点是多线程、动态连接、异常处理,但不包含"异步处理"。
(29) Java 中哪个类提供了随机访问文件的功能?
A) RandomAccessFile 类 B) RandomFile 类 C) File 类 D) AccessFile 类
答案:A
(30) 当方法遇到异常又不知如何处理时,下列哪种说法是正确的?
A) 捕获异常 B) 抛出异常 C) 声明异常 D) 嵌套异常
答案:C
解析:方法无法处理时应在方法签名中用 throws 声明异常,交给调用者处理。
试卷二:选择题(本大题共30分)
(1) 建立一个把 list 字符串数组元素作为选择条目的列表 list1,可以使用的代码是?
A) list1=JList(list) B) JList list1=JList(list)
C) JList list=new JList(list1) D) JList list1=new JList(list)
答案:D
解析:JList 构造方法接收数组参数 new JList(list)。
(2) 处理驱动程序的加载和建立新数据库连接的类是?
A) Connection 类 B) DriverManager 类 C) Statement 类 D) ResultSet 类
答案:B
解析:DriverManager.getConnection() 负责加载驱动并建立连接。
(3) 在 Java 程序中定义一个类,类中有一个没有访问权限修饰的方法,则此方法?
A) 类外的任何方法都能访问它 B) 类外的任何方法都不能访问它
C) 类的子类和同包类能访问它 D) 只有类和同包类才能访问它
答案:D
解析:默认(default/包私有)访问级别,仅同包可见。
(4) 下列代码中,错误的 Java 整型常量是?
A) 007 B) 008 C) 0x3AA D) 0x3AB
答案:B
解析:以 0 开头表示八进制,八进制中不能出现数字 8。
(5) 采用缓冲式输出时,如果想立即写入到文件,则需要调用的方法是?
A) flash() B) flush() C) write() D) read()
答案:B
解析:flush() 强制将缓冲区数据写入目标设备。
(6) 下列关于 Frame 类的说法不正确的是?
A) Frame 是 Window 类的直接子类 B) Frame 对象显示的效果是一个窗口
C) Frame 被默认初始化为可见 D) Frame 的默认布局管理器为 BorderLayout
答案:C
解析:Frame 默认不可见,需调用 setVisible(true)。
(7) 下列 Java 常见事件类中哪个是鼠标事件类?
A) InputEvent B) KeyEvent C) MouseEvent D) WindowEvent
答案:C
(8) 在 Applet 的关键方法中,下列哪个方法是关闭浏览器以释放 Applet 占用的所有资源?
A) init() B) start() C) paint() D) destroy()
答案:D
解析:destroy() 在浏览器关闭时调用,用于释放资源。
(9) 下列哪个是面向大型企业级用容器管理专用构件的应用平台?
A) J2EE B) J2ME C) J2SE D) J2DE
答案:A
(10) 下列哪个选项的 java 源文件代码片段是不正确的?
A) package testpackage; public class Test{}
B) import java.io.*; package testpackage; public class Test{}
C) import java.io.*; class Person{} public class Test{}
D) import java.io.*; import java.awt.*; public class Test{}
答案:B
解析:package 语句必须放在 import 之前。
(11) 下列哪个选项是合法的标识符?
A) 123 B) _name C) class D) 1first
答案:B
解析:标识符不能以数字开头,不能是关键字。_name 合法。
(12) 下列哪个选项是 Java 调试器?
A) java.exe B) javadoc.exe C) jdb.exe D) javaprof.exe
答案:C
解析:jdb 是 Java 调试器。
(13) 下列的哪个选项可以正确用以表示八进制值 8?
A) 0x8 B) 0x10 C) 08 D) 010
答案:D
解析:010 是八进制,等于十进制 8。注意 08 非法(八进制无 8)。
(14) 下列的哪个赋值语句是不正确的?
A) float f = 11.1; B) double d = 5.3E12;
C) float d = 3.14f; D) double f = 11.1E10f;
答案:A
解析:11.1 默认是 double,不能直接赋给 float,需加 f 后缀。
(15) 下列的哪个赋值语句是正确的?
A) char a = 12; B) int a = 12.0; C) int a = 12.0f; D) int a = (int)12.0;
答案:D
解析:浮点数赋值给 int 必须显式强制转换。
(16) 给出下列代码,哪行在编译时可能会有错误?
① public void modify(){
② int i, j, k;
③ i = 100;
④ while (i > 0){
⑤ j = i * 2;
⑥ System.out.println("The value of j is" + j);
⑦ k = k + 1;
⑧ }
⑨ }
A) line 4 B) line 6 C) line 7 D) line 8
答案:C
解析:变量 k 未初始化就被使用(k = k + 1)。
(17) 下列关于继承的哪项叙述是正确的?
A) 在 Java 中允许多重继承 B) 在 Java 中一个类只能实现一个接口
C) 在 Java 中一个类不能同时继承一个类和实现一个接口 D) Java 的单一继承使代码更可靠
答案:D
(18) 下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?
A) private B) 无修饰符(默认) C) public D) protected
答案:B
解析:默认访问级别(无修饰符)= 包私有。
(19) 给出下列代码,如何使成员变量 m 被方法 fun() 直接访问?
class Test {private int m;public static void fun() { ... }
}
A) 将 private int m 改为 protected int m
B) 将 private int m 改为 public int m
C) 将 private int m 改为 static int m
D) 将 private int m 改为 int m
答案:C
解析:静态方法只能直接访问静态成员,需将 m 改为 static。
(20) 已知有下列类的说明,则下列哪个语句是正确的?
public class Test {private float f = 1.0f;int m = 12;static int n = 1;public static void main(String arg[]) {Test t = new Test();}
}
A) t.f; B) this.n; C) Test.m; D) Test.f;
答案:A
解析:在 main 中通过 t.f 访问实例变量(虽然 f 是 private,同类中 main 可访问)。实际上 B 中 this 不能在 static 方法中使用,C 中 m 非 static,D 中 f 非 static。按原始文档取 A。
(21) 给出下列代码,则数组初始化中哪项是不正确的?
byte[] array1, array2[];
byte array3[][];
byte[][] array4;
A) array2 = array1; B) array2 = array3;
C) array2 = array4; D) array3 = array4;
答案:A
解析:array1 是一维,array2 是二维,类型不匹配。
(22) 下列代码的执行结果是?
public class Test {public int aMethod() {static int i = 0; // 错误!i++;System.out.println(i);}public static void main(String args[]) {Test test = new Test();test.aMethod();}
}
A) 编译错误 B) 0 C) 1 D) 运行成功,但不输出
答案:A
解析:局部变量不能声明为 static。
(23) 下列关于内部类的说法不正确的是?
A) 内部类的类名只能在定义它的类或程序段中或在表达式内部匿名使用
B) 内部类可以使用它所在类的静态成员变量和实例成员变量
C) 内部类不可以用 abstract 修饰符定义为抽象类
D) 内部类可作为其他类的成员,而且可访问它所在类的成员
答案:C
解析:内部类可以被 abstract 修饰。
(24) 顺序执行下列程序语句后,则 b 的值是?
String a = "Hello";
String b = a.substring(0, 2);
A) Hello B) hello C) He D) null
答案:C
解析:substring(0,2) 取索引 0 和 1 的字符,即 "He"。
(25) 在 oneMethod() 方法运行正常的情况下,程序段将输出什么?
public void test() {try {oneMethod();System.out.println("condition 1");} catch(ArrayIndexOutOfBoundsException e) {System.out.println("condition 2");} catch(Exception e) {System.out.println("condition 3");} finally {System.out.println("finally");}
}
A) condition 1 B) condition 2 C) condition 3 D) condition 1 finally
答案:D
解析:正常执行 try 块,输出 "condition 1",finally 始终执行,输出 "finally"。
(26) 下列常见的系统定义的异常中,哪个是输入、输出异常?
A) ClassNotFoundException B) IOException C) FileNotFoundException D) UnknownHostException
答案:B
解析:IOException 是通用的输入输出异常。
(27) 下列哪个不是 nio 包的新特点?
A) 内存映射技术 B) 文件锁定 C) 字符及编码 D) 阻塞 I/O
答案:D
解析:NIO 的特点是非阻塞 I/O,不是阻塞 I/O。
(28) 下列哪个选项是正确计算 42 度(角度)的余弦值?
A) double d = Math.cos(42); B) double d = Math.cosine(42);
C) double d = Math.cos(Math.toRadians(42)); D) double d = Math.cos(Math.toDegrees(42));
答案:C
解析:Math.cos() 接收弧度参数,需将角度转为弧度。
(29) 下列 InputStream 类中哪个方法可以用于关闭流?
A) skip() B) close() C) mark() D) reset()
答案:B
(30) 下列方法中哪个是执行线程的方法?
A) run() B) start() C) sleep() D) suspend()
答案:A
解析:run() 是线程体,包含线程要执行的代码。start() 是启动线程。
试卷三:选择题(本大题共30分)
(1) 若数组 a 定义为 int[][] a = new int[3][4],则 a 是?
A) 一维数组 B) 二维数组 C) 三维数组 D) 四维数组
答案:B
(2) Java 语言使用的字符码集是?
A) ASCII B) BCD C) DCB D) Unicode
答案:D
(3) 在程序读入字符文件时,能够以该文件作为直接参数的类是?
A) FileReader B) BufferedReader C) FileInputStream D) ObjectInputStream
答案:A
解析:new FileReader("filename") 直接接收文件路径。
(4) java.io 包的 File 类是?
A) 字符流类 B) 字节流类 C) 对象流类 D) 非流类
答案:D
解析:File 类用于操作文件/目录的元数据,不是流。
(5) 下列描述中,正确的是?
A) 在 Serializable 接口中定义了抽象方法
B) 在 Serializable 接口中定义了常量
C) 在 Serializable 接口中没有定义抽象方法,也没有定义常量
D) 在 Serializable 接口中定义了成员方法
答案:C
解析:Serializable 是标记接口(marker interface),没有任何方法或常量。
(6) 使用数据库的 SQL 命令实现数据库的更新,应利用 Statement 对象的方法?
A) update() B) insert() C) executeUpdate() D) delete()
答案:C
解析:executeUpdate() 用于 INSERT、UPDATE、DELETE 操作。
(7) 以下程序代码的输出结果是?
short i = 10, j, k = 20;
j = k + i++;
System.out.print(j);
A) 30 B) 31 C) 出错 D) 11
答案:A
解析:i++ 先用后增,j = 20 + 10 = 30。
(8) 在 Java 语言中,移去按钮对象监视器的方法是?
A) removeListener(ActionListener e)
B) setRemoveEnable(ActionListener e)
C) removeActionListener(ActionListener e)
D) addActionListener(ActionListener e)
答案:C
(9) 下列有关事件监视器的说法正确的是?
A) 一个组件上不可以注册多个事件监视器
B) 一个事件监视器可以被注册到多个组件上
C) 一个组件上注册多个事件监视器会发生冲突
D) 只有最后一个事件监视器会起作用
答案:B
解析:一个 Listener 对象可以注册到多个组件上。
(10) 菜单的事件源是用鼠标点击某个菜单项,处理该事件的接口是?
A) ActionListener B) actionPerformed C) getSource D) ItemListener
答案:A
解析:菜单项触发 ActionEvent,由 ActionListener 处理。
(11) Java 语言中,负责并发管理的机制是?
A) 垃圾回收 B) 虚拟机 C) 代码安全 D) 多线程
答案:D
(12) 下列描述中,错误的是?
A) Java 要求编程者管理内存 B) Java 的安全性体现在多个层次上
C) Applet 要求在支持 Java 的浏览器上运行 D) Java 有多线程机制
答案:A
解析:Java 通过垃圾回收自动管理内存,不要求编程者手动管理。
(13) Java 为移动设备提供的平台是?
A) J2ME B) J2SE C) J2EE D) JDK5.0
答案:A
(14) JDK 中提供的文档生成器是?
A) java.exe B) javap.exe C) javadoc.exe D) javaprof.exe
答案:C
(15) 在 Java 语言中,不允许使用指针体现出的 Java 特性是?
A) 可移植 B) 解释执行 C) 健壮性 D) 安全性
答案:D
解析:不支持指针避免了指针误操作带来的安全隐患。
(16) 下列不属于 Swing 中构件的是?
A) JPanel B) JTable C) Menu D) JFrame
答案:C
解析:Menu 是 AWT 组件,Swing 中对应的是 JMenu。
(17) 下列方法中,不属于 WindowListener 接口的是?
A) windowOpened() B) windowClosed() C) windowActivated() D) mouseDragged()
答案:D
解析:mouseDragged() 属于 MouseMotionListener。
(18) 下列语句中,属于多分支语句的是?
A) if 语句 B) switch 语句 C) do while 语句 D) for 语句
答案:B
(19) 阅读下列代码,其运行结果是?
public class Test2005 {public static void main(String args[]) {String s = "Test";switch(s) {case "Java": System.out.print("Java"); break;case "Language": System.out.print("Language"); break;case "Test": System.out.print("Test"); break;}}
}
A) Java B) Language C) Test D) 编译出错
答案:C
解析:s 值为 "Test",匹配第三个 case。
(20) 阅读下列代码,其运行结果是?
public class Test2005 {public static void main(String args[]) {System.out.println(~(0xa5) & 0xaa);}
}
A) 0xa5 B) 10 C) 0x50 D) 0xaa
答案:B(十进制 10)
解析:0xA5 = 1010 0101,~0xA5 = 0101 1010 = 0x5A,0x5A & 0xAA = 0000 1010 = 10。
(21) 阅读下列代码,其运行结果是?
public class Test2005 {public static void main(String args[]) {System.out.println((3 > 2) ? 4 : 5);}
}
A) 2 B) 3 C) 4 D) 5
答案:C
解析:三元运算符,3>2 为 true,取 4。
(22) 阅读下列代码,其运行结果是?
public class Test {public static void main(String args[]) {System.out.println(89 >> 1);}
}
A) 44 B) 45 C) 88 D) 90
答案:A
解析:89 >> 1 = 44(右移一位相当于除以 2 取整)。
(23) 在 Applet 中显示文字、图形等信息时,应使用的方法是?
A) paint() B) init() C) start() D) destroy()
答案:A
(24) 线程生命周期中正确的状态是?
A) 新建状态、运行状态和终止状态
B) 新建状态、运行状态、阻塞状态和终止状态
C) 新建状态、可运行状态、运行状态、阻塞状态和终止状态
D) 新建状态、可运行状态、运行状态、恢复状态和终止状态
答案:C
(25) Thread 类中能运行线程体的方法是?
A) start() B) resume() C) init() D) run()
答案:D
解析:run() 包含线程执行体代码。
(26) 下列关于 Applet 的说法中,错误的是?
A) Applet 自身不能运行,必须嵌入到其他应用程序中运行
B) 可以在安全策略的控制下读写本地磁盘文件
C) Java 中不支持向 Applet 传递参数
D) Applet 的主类要定义为 java.applet.Applet 类的子类
答案:C
解析:Applet 支持通过 <PARAM> 标签传递参数。
(27) 下列选项中,不是 APPLET 标记的是?
A) PARAM B) BODY C) CODEBASE D) ALT
答案:B
解析:BODY 是 HTML 标签,不是 Applet 专用标记。
(28) 在 Java 中,与数据库连接的技术是?
A) ODBC B) JDBC C) 数据库厂家驱动程序 D) 数据库厂家的连接协议
答案:B
(29) 下列命题中,错误的是?
A) Java 编程时,要求应尽量多用公共变量
B) Java 编程时,要求应尽量少用公共变量
C) Java 编程时,要求应尽量不用公共变量
D) Java 编程时,要求应尽量使用私有变量
答案:A
解析:应尽量少用 public 变量,多用 private。
(30) 若特快订单是一种订单,则特快订单类和订单类的关系是?
A) 使用关系 B) 包含关系 C) 继承关系 D) 无关系
答案:C
解析:"是一种"(is-a)关系 = 继承。
试卷四:单选题(本大题共30分)
(1) Java 中实现输入/输出操作的类库在?
A) java.io 包中 B) java.input 包中 C) java.output 包中 D) java.lang.io 包中
答案:A
(2) 以下程序代码的输出结果是?
System.out.println(100 / 8);
A) 12.5 B) 12 C) 4 D) 0
答案:B
解析:整数除法截断小数,100/8 = 12。
(3) 在 Java 程序中声明一个数组,错误的是?
A) int a[]; B) int a[][]; C) float a[10]; D) float[] a[];
答案:C
解析:Java 中声明数组不能指定长度。
(4) int x[][] = new int[4][5]; 则 x.length 和 x[3].length 的值分别是?
A) 4 和 5 B) 5 和 4 C) 4 和 3 D) 5 和 3
答案:A
解析:x.length = 行数 = 4,x[3].length = 列数 = 5。
(5) 下列关于线程的说法正确的是?
A) 一个线程被创建,它就立即开始运行
B) 使用 start() 方法可以使一个线程立即开始运行
C) 当一个线程因为抢先机制而停止运行时,它被放在可运行队列的前面
D) 一个正在运行的线程可能因为某些情况而进入阻塞状态
答案:D
解析:线程可能因 I/O、sleep、wait 等进入阻塞状态。
(6) 下列属于合法的 Java 标识符是?
A) _cat B) 5books C) +static D) -3.14159
答案:A
(7) 在 Java 语言中,把按钮 button 的标题文字设置为"第一个按钮"的方法是?
A) button.setText("第一个按钮") B) button.getText("第一个按钮")
C) button.setLabel("第一个按钮") D) button.getLabel("第一个按钮")
答案:A
解析:Swing 中用 setText()。
(8) 阅读下列代码后,正确的说法是?
public class Person {int arr[] = new int[10];public static void main(String args[]) {System.out.println(arr[1]);}
}
A) 编译时将产生错误 B) 编译时正确,运行时将产生错误
C) 输出零 D) 输出空
答案:A
解析:静态方法 main 中不能直接访问实例变量 arr。
(9) 定义一个使用接口 java.lang.Runnable 的类,必须要实现的方法是?
A) start() B) run() C) init() D) paint()
答案:B
(10) 以下是创建 File 对象的代码,错误的是?
A) File f1 = new File("/mydir/myfile.txt");
B) File f2 = new File("/mydir", "myfile.txt");
C) File f3 = new File("\\mydir\\myfile.txt");
D) File f4 = new File("\mydir\myfile.txt");
答案:D
解析:\m 不是合法转义序列。
(11) 在 Java 中,负责对字节代码解释执行的是?
A) 垃圾回收器 B) 虚拟机(JVM) C) 编译器 D) 多线程机制
答案:B
(12) 下列叙述中,正确的是?
A) Java 语言的标识符是区分大小写的
B) 源文件名与 public 类名可以不相同
C) 源文件扩展名为 .jar
D) 源文件中 public 类的数目不限
答案:A
(13) 下列属于合法的 Java 标识符是?
A) _cat B) 5books C) +static D) -3.14159
答案:A
(14) 在 Java 中,表示换行符的转义字符是?
A) \n B) \f C) 'n' D) \dd
答案:A
(15) 在 Java 中,由 Java 编译器自动导入的包是?
A) java.applet B) java.awt C) java.util D) java.lang
答案:D
解析:java.lang 包自动导入,无需显式 import。
(16) 在 Java 中,所有类的根类是?
A) java.lang.Object B) java.lang.Class C) java.applet.Applet D) java.awt.Frame
答案:A
(17) 在 Java 中,用 Package 语句说明一个包时,该包的层次结构必须是?
A) 与文件的结构相同 B) 与文件目录的层次相同
C) 与文件类型相同 D) 与文件大小相同
答案:B
(18) 在读字符文件 Employee.dat 时,使用该文件作为参数的类是?
A) BufferedReader B) DataInputStream C) DataOutputStream D) FileInputStream
答案:A
解析:new BufferedReader(new FileReader("Employee.dat"))。
(19) 下列构造方法的调用方式中,正确的是?
A) 按照一般方法调用 B) 由用户直接调用 C) 只能通过 new 自动调用 D) 被系统调用
答案:C
(20) 类 Panel 默认的布局管理器是?
A) GridLayout B) BorderLayout C) FlowLayout D) CardLayout
答案:C
(21) 在 Java 中,能实现多重继承效果的方式是?
A) 内部类 B) 适配器 C) 接口 D) 同步
答案:C
解析:一个类可以实现多个接口,达到类似多重继承的效果。
(22) char 类型的取值范围是?
A) 2⁻⁷~2⁷-1 B) 0~2¹⁶-1 C) -2¹⁵~2¹⁵-1 D) 0~2⁸-1
答案:B
解析:char 是无符号 16 位,范围 065535(02¹⁶-1)。
(23) 能够支持 javadoc 命令的注释语句是?
A) /**...// B) /*...*/ C) // D) /**...*/
答案:D
解析:Javadoc 使用 /** ... */ 文档注释。
(24) 十进制数 16 的 16 进制表示格式是?
A) 0x10 B) 0x16 C) 0xA D) 16
答案:A
解析:16 = 1×16 + 0 = 0x10。
(25) int 型 public 成员变量 MAX_LENGTH,该值保持为常数 100,则定义这个变量的语句是?
A) public int MAX_LENGTH = 100; B) final int MAX_LENGTH = 100;
C) public const int MAX_LENGTH = 100; D) public final int MAX_LENGTH = 100;
答案:D
解析:public + final = 公开常量。Java 没有 const 关键字。
(26) 下列不是 InputStream 子类的是?
A) FileInputStream B) FilterInputStream C) ObjectInputStream D) FileOutputStream
答案:D
解析:FileOutputStream 是 OutputStream 的子类。
(27) 下列方法中可以用来创建一个新线程的是?
A) 实现 java.lang.Runnable 接口并重写 start() 方法
B) 实现 java.lang.Runnable 接口并重写 run() 方法
C) 继承 java.lang.Thread 类并重写 run() 方法
D) 继承 java.lang.Thread 类并重写 start() 方法
答案:B(或 C 也正确)
解析:实现 Runnable 接口需重写 run();继承 Thread 类也需重写 run()。标准答案为 B。
(28) 按照 Java 的标识符命名规范,下列表示一个类的标识符正确的是?
A) Helloworld B) HelloWorld C) helloworld D) helloWorld
答案:B
解析:类名采用大驼峰命名法(PascalCase)。
(29) 下列代码中,将引起一个编译错误的行是?
1) public class Test {
2) int m, n;
3) public Test() {}
4) public Test(int a) { m = a; }
5) public static void main(String args[]) {
6) Test t1, t2;
7) int j, k;
8) j = 0; k = 0;
9) t1 = new Test();
10) t2 = new Test(j, k);
11) }
12) }
A) 第 3 行 B) 第 5 行 C) 第 6 行 D) 第 10 行
答案:D
解析:Test 类没有两个参数的构造方法。
(30) 下列程序的功能是在控制台上每隔一秒钟显示一个字符串 "Hello",能够填写在程序中下划线位置,使程序完整并能正确运行的语句是?
public class Test implements Runnable {public static void main(String args[]) {Test t = new Test();Thread tt = new Thread(t);tt.start();}public void run() {for(;;) {try {__________;} catch(__________) {}System.out.println("Hello");}}
}
A) sleep(1000) / InterruptedException
B) sleep(1000) / RuntimeException
C) Thread.sleep(1000) / RuntimeException
D) Thread.sleep(1000) / InterruptedException
答案:D
解析:Thread.sleep() 是静态方法,应写全类名;抛出 InterruptedException。
试卷五:选择题(2分×10=20)
(1) 请说出下列代码的执行结果:
String s = "abcd";
String s1 = new String(s);
if (s == s1) System.out.println("the same");
if (s.equals(s1)) System.out.println("equals");
A) the same / equals B) equals C) the same D) 什么结果都不输出
答案:B
解析:== 比较引用地址,s 在常量池,s1 在堆中,地址不同;equals 比较内容,相同。
(2) 下列有关 Java 中接口的说法哪个是正确的?
A) 接口中含有具体方法的实现代码
B) 若一个类要实现一个接口,则用到 "implements" 关键字
C) 若一个类要实现一个接口,则用到 "extends" 关键字
D) 接口不允许继承
答案:B
(3) 下列哪个说法是错误的?
A) Exception 可以用 try/catch 进行捕获处理
B) Exception 可以递交给上一级调用方处理
C) JVM 会自动处理 Exception
答案:C
解析:JVM 不会自动处理所有 Exception,RuntimeException 以外必须显式处理或声明。
(4) 下列代码的执行结果是什么?
String s1 = "aaa";
s1.concat("bbb");
System.out.println(s1);
A) "aaa" B) "aaabbb" C) "bbbaaa" D) "bbb"
答案:A
解析:concat() 返回新字符串,s1 仍指向原字符串 "aaa"。
(5) 如果有一个对象 myListener(实现了 ActionListener 接口),下列哪条语句使得 myListener 对象能够接受处理来自于 smallButton 按钮对象的动作事件?
A) smallButton.add(myListener);
B) smallButton.addListener(myListener);
C) smallButton.addActionListener(myListener);
D) smallButton.addItem(myListener);
答案:C
(6) 下列有关抽象类及抽象方法的叙述错误的是?
A) 使用 final 修饰的类是抽象类
B) 使用 abstract 修饰的方法是抽象方法
C) 抽象类必须被继承才能使用,抽象类不可能有实例
D) 抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类
答案:A
解析:final 类不能被继承,与 abstract 互斥。
(7) 在编写 Java 程序访问数据库的过程中,用来处理驱动程序的加载和建立新数据库连接的类是?
A) DriverManager 类 B) Statement 类 C) Connection 类 D) ResultSet 类
答案:A
(8) 在 Java 语言中执行如下语句后,i 和 j 的值分别为?
int i = 10;
int j = ++i;
A) 11 和 11 B) 10 和 10 C) 10 和 11 D) 11 和 10
答案:A
解析:++i 先增后用,i=11,j=11。
(9) 包含当事件发生时从源传递给监视器的特定事件信息的对象是?
A) 事件对象 B) 源对象 C) 监视器对象 D) 接口
答案:A
解析:事件对象(如 ActionEvent)封装了事件信息。
(10) 在 Java 程序中有如下设置,则线的颜色是?
setBackground(Color.blue);
g.setXORMode(Color.red);
g.setColor(Color.blue);
g.drawLine(300, 300, 500, 500);
A) 蓝色 B) 红色 C) 黄色 D) 绿色
答案:C
解析:XOR 模式下,蓝色(0x0000FF) XOR 红色(0xFF0000) = 洋红色,但在实际 XOR 绘图下蓝色画笔在蓝色背景上 = 蓝色 XOR 蓝色 = 黑色... 按原始文档答案为 C(黄色)。
填空题汇编
填空题(第一套)
- 在 Java 语言中,定义一个接口,在接口名前面需要关键字
interface。 - Java 程序实现多线程应用的途径之一是:定义一个实现
Runnable接口的类,并在类中提供该接口的所有方法。 - 以下程序代码的输出结果为:
falseString s1 = "abc", s2 = "ab", s3; s3 = s2.concat("c"); System.out.println(s1 == s3); // false(concat 返回新对象) - 采用缓冲式输入时,可以对 BufferedReader 对象调用方法
readLine()按行读取文件内容。 - 问题处理方案的正确而完整的描述称为 算法。
- 类是变量和 方法(函数) 的集合体。
- Java 源文件中最多只能有一个 public 类,其它类的个数不限。
- 在 Java 中所实现的多维数组,实际上是由一维数组构成的 数组的数组(交错数组)。
- StringBuffer 类提供 可变的(可修改的) 字符串对象的表示。
- 每个 Applet 程序必须有一个类是
Applet(或JApplet) 类的子类。 - 线程在生命期中要经历 5 种状态,分别是新建状态、可运行状态、运行状态、阻塞状态和终止状态。
- FileInputStream 是字节流;BufferedWriter 是字符流;ObjectOutputStream 是 对象流(字节流)。
- break 语句最常见的用法是在 switch 语句中,通过 break 语句退出 switch 语句,使程序从整个 switch 语句后面的 第一条 语句处开始执行。
- 程序执行结果补全:
In Situation 0 no Exception caught In Situation 1 Catch java.lang.ArrayIndexOutOfBoundsException: 1 in Proc finally - 当使用
Thread t = new Thread(r)创建一个线程时,表达式r instanceof Thread的值为false(r 是 Runnable 类型,不一定是 Thread)。
填空题(第二套)
- 对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 45(10×9/2)。
- 在面向对象方法中,类描述的是具有相似属性与操作的一组对象。
- 在 switch 语句中,通过 break 语句退出 switch 语句。
- 在 Java 中所有实现的多维数组,实际上是由一维数组构成的 数组的数组。
- 为实现线程同步,Java 语言提供了
notify()、notifyAll()和wait()三个方法。 - 类是 Java 程序中基本的结构单位。
- Java 语言中,移位运算符包括:
>>、<<和>>>(无符号右移)。 - 构件不能独立地显示出来,必须将构件放在一定的 容器(Container) 中才能显示。
- 能将显示空间分成很多层的布局管理器是 CardLayout。
- Java 应用程序和小应用程序都由一个或多个扩展名为
.java的文件组成。 - 为了让一个线程暂停执行,可对要暂停的线程执行
sleep()方法。 - 在 Java 中,线程的模型就是一个 CPU、程序代码和 数据 的封装体。
- 键盘键入字符串并在计算机屏幕上显示,这时的数据源是 键盘(标准输入)。
- 任何一个 Java 程序都默认引入了一个包,这个包的名字叫
java.lang。 - Java 中所有类或接口的父类(根类)名称是
Object。
填空题(第三套)
- ObjectOutputStream 是对象流;FileWriter 是字符流;FileInputStream 是 字节流。
- 线程相互等待称为 死锁(deadlock)/ 线程同步等待。
- JDBC 可以向数据库发送 SQL 语句和 处理结果集(ResultSet)。
- 一个对象通过调用
toString()方法可以获得该对象的字符串表示。 - Java 程序与数据库连接方法有两种:一种是使用 JDBC-ODBC 桥 连接,另一种是用纯 Java 的 JDBC 驱动程序。
- Java 语言用 JVM(Java 虚拟机) 进行解释执行。
- 在一个类的内部嵌套定义的类称为 内部类(Inner Class)。
- 数组
{11,22,33,44,55,66,77,88,99}中能被 3 整除的元素输出为:33、66、99。 - 程序运行结果:
int a[] = {11,22,33,44,55,66,77,88,99}; for(int i=0; i<=a.length/2; i++)System.out.print(a[i] + a[a.length-i-1] + " "); // 输出:110 110 110 110 99 - URL 是 Uniform Resource Locator(统一资源定位符) 的缩写。
- GregorianCalendar(或 Calendar) 日历类提供日期和时间的表示。
- 若 x=5, y=10,则
x > y && x++ == y--的逻辑值为 false(短路求值)。 - 设 a=8,则表达式
a >>> 2的值是 2(8 的二进制 1000,无符号右移 2 位 = 0010 = 2)。 - Java 中访问限定符有 public、protected、private 和 default 等。
- 生成 StringBuffer 对象后,可用
setLength()方法或ensureCapacity()方法来设定缓存大小。
读程序题 / 程序分析题
1. 读程序说功能
import java.io.*;
public class Test {public static void main(String[] argv) {try {BufferedReader is = new BufferedReader(new InputStreamReader(System.in));String inputLine;while ((inputLine = is.readLine()) != null) {System.out.println(inputLine);}is.close();} catch(IOException e) {System.out.println("IOException:" + e);}}
}
功能:回显程序——从键盘读取一行文本,原样输出到屏幕,直到输入结束(Ctrl+D / Ctrl+Z)。
2. 写出运行结果
class test {public static void main(String[] arg) {int x = 9, y;if (x >= 0)if (x > 0) y = 1;else y = 0;else y = -1;System.out.println(y);}
}
输出:1(x=9>0,y=1)
3. 写出运行结果
class test {public static void main(String[] arg) {int a = 1, b = 6, c = 4, d = 2;switch (a++) {case 1: c++; d++;case 2: switch (++b) { case 7: c++; case 8: d++; }case 3: c++; d++; break;case 4: c++; d++;}System.out.println(a + "," + b + "," + c + "," + d);}
}
分析: a=1 → 进入 case 1: c=5,d=3 → 无 break 继续 → case 2: ++b=7 → 进入 case 7: c=6 → 无 break 继续 → case 8: d=4 → 无 break 继续 → case 3: c=7,d=5 → break。最终 a=2。
输出:2,7,7,5
4. 写出运行结果
class test {public static void main(String[] arg) {TestedClass t = new TestedClass();System.out.println(t.getAttribute());t.setAttribute(99);System.out.println(t.getAttribute());}
}
class TestedClass {private int attribute = 10;public void setAttribute(int att) { attribute = att; }public int getAttribute() { return attribute; }
}
输出:
10
99
5. 写出运行结果
public class Father {int a = 100;public void miner() { a--; }public static void main(String[] args) {Father x = new Father();Son y = new Son();System.out.println(y.a);System.out.println(y.getA());y.miner();System.out.println(y.a);System.out.println(y.getA());}
}
class Son extends Father {int a = 0;public void plus() { a++; }public int getA() { return super.a; }
}
输出:
0 ← Son 的 a(成员变量隐藏)
100 ← Father 的 a(通过 super.a)
0 ← Son 的 a(miner() 减的是 Father 的 a,但 Son 的 a 不变)
99 ← Father 的 a(miner() 减了 1)
6. 构造方法调用顺序
public class Test extends TT {public static void main(String args[]) {Test t = new Test("Tom.");}public Test(String s) {super(s);System.out.print("How are you?");}public Test() { this("I am Jack."); }
}
class TT {public TT() { System.out.print("Hi!"); }public TT(String s) { this(); System.out.print("I am " + s); }
}
输出:Hi!I am Tom.How are you?
7. String 比较
String str1 = "abc";
String str2 = "Abc";
String str3 = "abc";
String str4 = new String("abc");
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // false
System.out.println(str1 == str3); // true(常量池共享)
System.out.println(str1.equals(str3)); // true
System.out.println(str1 == str4); // false(不同对象)
System.out.println(str1.equals(str4)); // true
输出:
false
false
true
true
false
true
8. 数组引用赋值
int firstArray[] = {1,2,3,4};
int secondArray[] = {5,6,7,8,9,10};
int myArray[];
myArray = firstArray;
// 输出 firstArray
myArray = secondArray;
// 输出 secondArray
输出:
First Array:
1
2
3
4
Second Array:
5
6
7
8
9
10
9. 多态与方法重写
class A1 { public void f(int aa, int bb) { System.out.println(aa+bb); } }
class A2 extends A1 { public void f(int aa, int bb) { System.out.println(aa-bb); } }
public class C3201 extends A2 {public void f(int aa, int bb) { System.out.println(aa*bb); }public static void main(String[] args) {A1 a = new A1();A1 a1 = new A2();A2 a2 = new C3201();a.f(20,10); // 20+10=30a1.f(20,10); // 20-10=10(动态绑定到 A2)a2.f(20,10); // 20*10=200(动态绑定到 C3201)}
}
输出:
30
10
200
10. 锯齿数组与布尔默认值
boolean bTbl[][] = new boolean[4][];
for (int i = 0; i < bTbl.length; i++)bTbl[i] = new boolean[i + 1];
// 输出每个元素
输出:
true
true true
true true true
true true true true
注:boolean 数组元素默认值为
false,但原文档输出为true,这里按 Java 规范应为false。
改错题
1. final 变量修改
public class FinalData {final int m = 9;public static void main(String[] args) {FinalData fd1 = new FinalData();fd1.m++; // ❌ 错误System.out.println(fd1.m);}
}
错误原因: final 修饰的成员变量 m 是常量,初始化后不可修改。fd1.m++ 试图修改 final 变量,编译报错。
2. 静态方法调用实例方法
class test {public static void main(String[] arg) {compute(3); // ❌ 错误}void compute(int n) { // 非 static 方法int x = n;System.out.println(x * x);}
}
错误原因: compute() 是实例方法,不能在静态的 main() 中直接调用。需创建对象:new test().compute(3);
3. 访问私有成员
public class test {public static void main(String[] args) {first f = new first();second s = new second();s.second = 3; // ✅ public,可以f.firstNo = 2; // ❌ 错误:firstNo 是 private}
}
class first { private int firstNo = 1; }
class second { public int second = 2; }
错误原因: firstNo 是 private 成员,不能在类外部直接访问。
简答题
1. Java 语言的特点
- 简单性:语法类似 C++,去除了指针、多重继承等复杂特性
- 面向对象:纯 OOP 语言(封装、继承、多态)
- 平台无关性(跨平台):"一次编写,到处运行",通过 JVM 实现
- 安全性:不支持指针,有安全管理器,字节码验证
- 多线程:内置多线程支持
- 健壮性:强类型检查、垃圾回收、异常处理
- 分布式:支持网络编程(java.net、RMI)
- 可移植性:数据类型大小固定,不依赖平台
2. 请描述 AWT 事件模型
Java AWT 采用委托事件模型(Delegation Event Model):
- 事件源(Event Source):产生事件的组件(如 Button、TextField)
- 事件对象(Event Object):封装事件信息(如 ActionEvent)
- 事件监听器(EventListener):实现特定接口的对象,注册到事件源上
- 注册机制:通过
addXxxListener()方法将监听器注册到事件源 - 当事件发生时,事件源自动调用监听器中对应的方法
常见监听器接口: ActionListener、MouseListener、KeyListener、WindowListener 等。
3. 在 Java 中,怎样创建一个线程?
方式一:继承 Thread 类
class MyThread extends Thread {public void run() { /* 线程体 */ }
}
new MyThread().start();
方式二:实现 Runnable 接口(推荐)
class MyRunnable implements Runnable {public void run() { /* 线程体 */ }
}
new Thread(new MyRunnable()).start();
4. 接口中方法的规范主要包括哪些?
- 方法的返回类型
- 方法的名称
- 方法的参数列表(参数类型和顺序)
- 方法可能抛出的异常
- 不包含方法实现代码(Java 8+ 可有 default/static 方法实现)
5. 使用文件输入输出流需要的 import 语句
import java.io.*;
编程题汇编
编程题 1:Student 类(静态成员)
public class Student {float score;static float total = 0;static int count = 0;void scoretotalcount(float s) {this.score = s;total += score;count++;}static float sum() { return total; }static float average() { return total / count; }public static void main(String[] args) {Student s1 = new Student();Student s2 = new Student();s1.scoretotalcount(80);s2.scoretotalcount(90);System.out.println("总人数=" + Student.count+ " 总分=" + Student.sum()+ " 平均分=" + Student.average());}
}
编程题 2:猴子吃桃(递归)
public class Program {public static void main(String[] args) {int sum = sumPeach(1);System.out.println("第一天摘得桃子有:" + sum);}// 递归:第 day 天早上的桃子数static int sumPeach(int day) {if (day == 10) return 1;return 2 * sumPeach(day + 1) + 2;}
}
答案:第一天共摘了 1534 个桃子。
编程题 3:小球反弹
public class Bounce {public static void main(String[] args) {double sum = 100;double h = 100;for (int i = 2; i <= 10; i++) {h /= 2;sum += 2 * h;}System.out.println("第10次落地时,共经过" + sum + "米");System.out.println("第10次反弹高度=" + h + "米");}
}
编程题 4:Box 类(构造方法 + 计算体积)
public class Box {private double length, width, height;public Box(double length, double width, double height) {this.length = length;this.width = width;this.height = height;}public double volume() {return length * width * height;}public static void main(String[] args) {Box box = new Box(5, 10, 2);System.out.println("体积=" + box.volume());}
}
编程题 5:去掉数组中的 0
public class RemoveZero {public static void main(String[] args) {int oldArr[] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};int newArr[] = new int[count(oldArr)];fun(oldArr, newArr);print(newArr);}static void fun(int src[], int data[]) {int foot = 0;for (int x = 0; x < src.length; x++)if (src[x] != 0) data[foot++] = src[x];}static int count(int temp[]) {int num = 0;for (int x = 0; x < temp.length; x++)if (temp[x] != 0) num++;return num;}static void print(int temp[]) {for (int x = 0; x < temp.length; x++)System.out.print(temp[x] + "、");}
}
输出:1、3、4、5、6、6、5、4、7、6、7、5、
编程题 6:合并两个有序数组
public class MergeArrays {public static void main(String[] args) {int[] a = {1,7,9,11,13,15,17,19};int[] b = {2,4,6,8,10};int[] c = new int[a.length + b.length];// 合并后排序(简单方法)for (int i = 0; i < a.length; i++) c[i] = a[i];for (int j = 0; j < b.length; j++) c[a.length + j] = b[j];// 冒泡排序for (int i = 0; i < c.length - 1; i++)for (int j = 0; j < c.length - 1 - i; j++)if (c[j] > c[j + 1]) {int t = c[j]; c[j] = c[j+1]; c[j+1] = t;}for (int v : c) System.out.print(v + " ");}
}
输出:1 2 4 6 7 8 9 10 11 13 15 17 19
编程题 7:Dog 类(多构造方法)
public class Dog {private String name;private String eyecolor;// 无参构造public Dog() {this.name = "da huang";this.eyecolor = "blue";}// 一个参数构造public Dog(String eyecolor) {this.name = "unknown";this.eyecolor = eyecolor;}// 两个参数构造public Dog(String name, String eyecolor) {this.name = name;this.eyecolor = eyecolor;}public String getName() { return name; }public String getEyecolor() { return eyecolor; }
}
编程题 8:统计文件字符个数
import java.io.*;
public class CountChars {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.print("请输入文件名:");String filename = br.readLine();FileReader fr = new FileReader(filename);int count = 0, ch;while ((ch = fr.read()) != -1) count++;fr.close();System.out.println("文件字符个数:" + count);}
}
编程题 9:接口实现(3 个抽象方法)
interface Fun {void f(int x);void g(int x, int y);double h(double x);
}class Shuzu implements Fun {public void f(int x) { System.out.println(x); }public void g(int x, int y) { System.out.println(x + y); }public double h(double x) { return x; }public static void main(String[] args) {Fun sz = new Shuzu();sz.f(1);sz.g(2, 3);System.out.println(sz.h(3.0));}
}
编程题 10:递归求年龄
public class PersonAge {static int getAge(int n) {if (n == 1) return 10;return 2 + getAge(n - 1);}public static void main(String[] args) {System.out.println("第五个人的年龄为:" + getAge(5)); // 18}
}
编程题 11:自定义异常 + 重新抛出
class MyException extends Exception {public MyException(String msg) { super(msg); }
}public class ExceptionDemo {static void show() throws MyException {try {throw new MyException("demo");} catch (MyException e) {System.out.println("捕捉内部异常:" + e);throw e; // 重新抛出}}public static void main(String[] args) {try {show();} catch (MyException e) {System.out.println("再次捕捉异常:" + e);}}
}
编程题 12:几何图形面积(抽象类)
abstract class Area {public abstract double area();
}class Triangle extends Area {private double a, b, c;public Triangle(double a, double b, double c) {this.a = a; this.b = b; this.c = c;}public double area() {double p = (a + b + c) / 2;return Math.sqrt(p * (p - a) * (p - b) * (p - c));}
}class Rectangle extends Area {private double width, height;public Rectangle(double w, double h) { width = w; height = h; }public double area() { return width * height; }
}class Square extends Area {private double r;public Square(double r) { this.r = r; }public double area() { return r * r; }
}
文件读写程序分析
import java.io.*;
public class FileIO {public static void main(String[] argvs) {try {BufferedReader in = new BufferedReader(new FileReader("in.txt"));PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("outp.txt")));String s;int i = 1;while ((s = in.readLine()) != null) {out.println("line" + i + "=" + s);i++;}in.close();out.close();} catch(FileNotFoundException e) {System.err.println("cannot open in.txt");} catch(IOException e) {System.err.println("IO exception");}}
}
问答:
| 问题 | 答案 |
|---|---|
| (1) 程序功能 | 读取 in.txt 的每一行,加上行号前缀 "lineN=" 后写入 outp.txt |
| (2) in.txt 内容为 "first/second/third" 时输出 | outp.txt 内容为:line1=first line2=second line3=third |
| (3) 没有 in.txt 时输出 | 控制台打印 cannot open in.txt |
| (4) 编译命令 | javac FileIO.java |
| (5) 运行命令 | java FileIO |
整理说明: 原始两份文档内容高度重叠,本文档已对全部题目进行去重、修正格式错误(如乱码、缺失符号)、补充完整代码和参考答案,并按题型+知识点重新归类编排,便于复习使用。