1.以下关于Java语言特点的描述,错误的是( )
A. Java是纯面向对象的语言,所有代码都写在类中
B. Java支持多继承,一个类可以直接继承多个父类
C. Java程序通过Java虚拟机实现跨平台
D. Java提供了自动垃圾回收机制
2.下列哪个声明是正确的char类型常量?( )
A. 'ab' B. "a" C. '\u0061' D. '\\'
3.执行以下代码后,输出结果是( )
int a = 5;int b = a++ + ++a;System.out.println(b);
A. 10 B. 11 C. 12 D. 13
下列哪个表达式不会出现编译错误?( )
A. float f = 3.14;
B. char c = "A";
C. long l = 1234567890123L;
D. boolean b = 1;
关于数组的声明,以下语法正确的是( )
A. int[] arr = new int(10);
B. int arr[][] = new int[][3];
C. int[] arr = {1,2,3};
D. int[3] arr = new int[3];
以下switch语句中,合法的表达式类型是( )
A. long B. double C. String(Java 7+) D. boolean
下列代码输出结果为( )
public class Test {
public static void main(String[] args) {
int x = 0;
if (x = 1) {
System.out.println("true");
} else {
System.out.println("false");
}
}}A. true B. false C. 编译错误 D. 运行异常
关于类的访问权限,以下说法正确的是( )
A. 一个Java源文件中只能有一个public类
B. 默认访问权限的类可以被同一包外的子类访问
C. private修饰的成员可以被子类继承
D. protected成员在任何包中都可访问
以下关于构造方法的描述,正确的是( )
A. 构造方法必须显式定义
B. 构造方法可以被继承
C. 构造方法可以调用普通方法
D. 构造方法可以有返回类型void
执行以下代码,输出结果为( )
class Parent {
static { System.out.print("P"); }
Parent() { System.out.print("p"); }}class Child extends Parent {
static { System.out.print("C"); }
Child() { System.out.print("c"); }}public class Main {
public static void main(String[] args) {
new Child();
}}A. PpCc B. PCPpCc C. PCPc D. PCpc
下列哪个关键字用于防止方法被重写?( )
A. static B. final C. abstract D. private
关于抽象类和接口,说法错误的是( )
A. 抽象类可以有构造方法
B. 接口中的变量默认为public static final
C. 一个类可以实现多个接口,但只能继承一个抽象类
D. 抽象类中不能有非抽象方法
下列哪个是Java中正确的多线程创建方式?( )
A. 继承Thread类并重写start()方法
B. 实现Runnable接口并实现run()方法
C. 实现Callable接口必须重写call()方法,且不能通过Thread启动
D. 以上全部正确
以下代码可能存在线程安全问题,需要同步的代码块是( )
class Counter {
private int count = 0;
public void increment() { count++; }
public int getCount() { return count; }}A. 仅increment方法 B. 仅getCount方法
C. increment和getCount都需要 D. 不需要同步
关于异常处理,以下说法正确的是( )
A. finally块一定会执行,即使有System.exit(0)
B. throws关键字用于方法内部抛出异常
C. RuntimeException及其子类必须显式捕获或声明
D. 自定义异常通常继承Exception类
执行下面代码,输出结果是( )
try {
int a = 10 / 0;} catch (ArithmeticException e) {
System.out.print("A");} finally {
System.out.print("B");}A. A B. B C. AB D. 编译错误
下列哪个流是字符输入流?( )
A. FileInputStream B. ObjectOutputStream
C. BufferedReader D. DataInputStream
使用File类创建多级目录,应调用( )
A. mkdir() B. mkdirs() C. createNewFile() D. createDirectory()
关于String和StringBuilder,正确的是( )
A. String是可变字符序列
B. StringBuilder是线程安全的
C. String的+操作底层会使用StringBuilder
D. StringBuilder的append()方法返回void
下列哪个布局管理器将容器划分为5个区域(North, South, East, West, Center)?( )
A. FlowLayout B. BorderLayout C. GridLayout D. CardLayout
在Swing中,为JButton添加事件监听器,通常需要实现哪个接口?( )
A. MouseListener B. KeyListener C. ActionListener D. WindowListener
下列代码的输出结果是( )
int[] arr = new int[3];System.out.println(arr[3]);
A. 0 B. null C. 编译错误 D. ArrayIndexOutOfBoundsException
以下关于equals()和==的说法,正确的是( )
A. ==比较的是对象的内容
B. equals()默认比较内存地址
C. 两个String对象内容相同,==一定为true
D. 基本数据类型可以使用equals()
下面哪个集合类不允许存储重复元素并且线程安全?( )
A. ArrayList B. HashSet C. Vector D. CopyOnWriteArrayList
代码System.out.println(1 + 2 + "3" + 4 + 5);输出结果是( )
A. 12345 B. 3345 C. 3345 D. 15
26.关于静态内部类,说法正确的是( )
A. 可以直接访问外部类的实例变量
B. 不需要外部类实例即可创建
C. 不能包含静态成员
D. 必须使用static关键字修饰,且只能定义在外部类中
27.执行以下代码,输出结果为( )
public class Test {
public static void main(String[] args) {
int i = 0;
for (; i < 3; i++) {
if (i == 1) continue;
System.out.print(i);
}
}}A. 0 B. 02 C. 012 D. 02∞
关于RandomAccessFile,说法错误的是( )
A. 支持随机读写
B. 既可以读也可以写
C. 只能操作文件,不能操作内存
D. 必须通过new RandomAccessFile("file","r")指定模式
下面哪个选项可以正确编译并运行?( )
A. Object[] obj = new String[10]; obj[0] = new Integer(5);
B. List<String> list = new ArrayList<>(); list.add(10);
C. double d = 10 / 3; System.out.println(d);
D. short s = 10; s = s + 1;
关于Thread.sleep(1000),下面描述正确的是( )
A. 释放对象锁
B. 让当前线程进入就绪状态
C. 必须捕获InterruptedException
D. 可以放在同步代码块外
请写出程序的运行结果或指出错误原因
1.
public class Main {
public static void main(String[] args) {
String s1 = "Java";
String s2 = new String("Java");
String s3 = s2.intern();
System.out.println(s1 == s2);
System.out.println(s1 == s3);
}}结果: __________
2.
class A {
public void show() { System.out.print("A"); }}class B extends A {
public void show() { System.out.print("B"); }}public class Test {
public static void main(String[] args) {
A a = new B();
a.show();
((B)a).show();
}}结果: __________
3.
public class LoopTest {
public static void main(String[] args) {
int i = 0;
while (i++ < 3) {
System.out.print(i + " ");
}
}}结果: __________
4.
public class FinallyTest {
public static int test() {
try {
return 1;
} finally {
return 2;
}
}
public static void main(String[] args) {
System.out.println(test());
}}结果: __________
5.
class Parent {
String name = "Parent";
void print() { System.out.println(name); }}class Child extends Parent {
String name = "Child";
void print() { System.out.println(name); }}public class Demo {
public static void main(String[] args) {
Parent p = new Child();
System.out.println(p.name);
p.print();
}}结果: __________
6.
public class SyncTest {
public static void main(String[] args) throws InterruptedException {
Object lock = new Object();
Thread t1 = new Thread(() -> {
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {}
System.out.print("A");
}
});
Thread t2 = new Thread(() -> {
synchronized (lock) {
System.out.print("B");
lock.notify();
}
});
t1.start();
Thread.sleep(10);
t2.start();
}}结果(可能顺序不唯一,写出可能的一种合理输出): __________
7.
public class ExceptionFlow {
public static void main(String[] args) {
try {
method();
} catch (Exception e) {
System.out.print("C");
}
}
static void method() {
try {
throw new RuntimeException();
} catch (RuntimeException e) {
System.out.print("R");
throw e;
} finally {
System.out.print("F");
}
}}结果: __________
8.
import java.util.*;public class ListDemo {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
for (Integer i : list) {
if (i == 2) {
list.remove(i);
}
}
System.out.println(list);
}}结果(含异常信息): __________
9.
public class VarArgs {
static void test(int... a) {
System.out.print(a.length);
}
public static void main(String[] args) {
test(1,2,3);
test();
}}结果: __________
10.
public class StaticInit {
static { System.out.print("1"); }
static StaticInit t = new StaticInit();
{ System.out.print("2"); }
static { System.out.print("3"); }
public static void main(String[] args) {
System.out.print("4");
}}结果: __________
要求:代码结构清晰,命名规范,包含必要的异常处理
定义Student类,属性:id(String), name(String), age(int), score(double)
实现构造方法、getter/setter、toString
实现Comparable<Student>接口,按成绩降序排序,成绩相同时按年龄升序
在主类中创建一个包含至少5个学生的ArrayList<Student>
使用Collections.sort排序,并输出排序前和排序后的学生列表
添加功能:从文本文件students.txt中读取数据(格式:id,name,age,score每行一条),若文件不存在则创建并写入初始化数据,若存在则读取后排序输出
要求处理IOException和数字格式异常
窗口标题“Salary Calculator”,大小400×300,关闭时退出
使用BorderLayout布局
北区:JLabel提示“小时工资:” + JTextField,和“工作小时:” + JTextField,以及JButton“计算”
中心:JTextArea用于显示结果(不显示历史,只显示最新计算的工资)
南区:JButton“清除”清除所有文本框和结果
事件:点击“计算”时,读取两个文本框的数值(处理NumberFormatException,弹出JOptionPane警告),计算工资=小时工资×工作小时,保留两位小数显示在JTextArea
点击“清除”重置所有组件
要求使用Swing,事件监听使用Lambda或内部类
编写一个类FileEncryptCopy,包含方法:
void copyAndEncrypt(String src, String dest, int shift)
将源文件(文本文件)的每个字符向后移动shift个位置(例如shift=1,a→b,z→a,保留大小写和非字母)后写入目标文件
void copyAndDecrypt(String src, String dest, int shift) 逆操作
在主类中提供控制台菜单(使用Scanner):
加密复制
解密复制
退出
用户选择后输入源文件路径、目标文件路径、移位值(1-25),执行操作并提示成功或捕获FileNotFoundException、IOException
要求使用字符流(FileReader / FileWriter 或 BufferedReader / BufferedWriter)
定义BankAccount类,属性:balance(double)
方法:synchronized void withdraw(double amount),余额不足时打印“余额不足”并回滚
创建Customer类实现Runnable,构造器中传入账户和取款金额,在run中调用withdraw并打印取款详情
主类中创建一个共享BankAccount初始余额1000元
创建3个线程,分别尝试取款800元、600元、500元
启动所有线程,主线程等待所有取款结束后打印最终余额
使用Thread.join()确保结果正确
输出每次取款前后的余额,展示同步效果
定义一个自定义异常ScoreOutOfRangeException,继承Exception,构造方法接收字符串信息
编写方法static double average(int[] scores) throws ScoreOutOfRangeException
遍历数组,如果某个成绩小于0或大于100,则抛出ScoreOutOfRangeException并携带错误成绩信息
否则计算平均值(double类型)
主类中:创建一个包含5个成绩的数组(其中包含一个非法成绩如-5或120)
捕获异常,打印异常信息,并输出“请重新输入成绩”
修正后(可写死修正值)再次调用方法,正确输出平均值
不使用Scanner,直接写测试数据