2019 年 Java 题库答案
一、选择题
1、关于 Java 语言叙述错误的是:( C )
A.Java 语言具有跨平台性 B.Java 是一种面向对象的语言
C.Java 类可以多继承 D.Java 程序具有可移植性
2、Java 应用程序中 main 方法的返回类型是什么?( D )
A、int
3、Java 编译器将 Java 程序转换为字节码并保存在( B )文件中。
C、double D、void
B、float
C、float
B、double
D、double
C.fieldname
A. .java B. .class C. .obj D. .exe
4、0.99 的数据类型是( B )
A、float
5、下面哪个不是 java 语言中的关键字?( B )
A.long B.sizeof C.instanceof D.const
6、以下哪项标识符是不合法的。( D )
D.3_a
A.super B.$1
7、关于 Java 中数据类型叙述正确的是( B )
A、整型数据在不同平台下长度不同 B.boolean 类型数据只有 2 个值,true 和 false
C.数组属于简单数据类型 D.String 属于 Java 基本数据类型
8、在 Java 语言中,以下哪个数组声明是不正确的( D )
A、int[ ] s1, s2; B、int[ ] a = new int[5]; C、int n=5; int[ ] a = new int[n] ; D、int a[5];
9、下列数据类型中,占用字节数最小的是( C )
A、short B、int C、byte D、long
10、以下二维数组声明合法的是( C )
A.char[2][3] ch = new char[ ][ ]
C.char[ ][ ] ch = new char[2][3]
11、已知 int i= Integer.MIN_VALUE;则(i-1)+(i-1L)= ( C )
B.char[2][ ] ch = new char[ ][3]
D.char[ ][ ] ch = new [2]char[3]
A. 0
12、下面程序段执行后 b 的值是( B )。
C. -2
B. 2
D. -1
Integer a =new Integer(9);
boolean b = a instanceof Object;
A. 9 B.true C.1 D.false
13、在命令行键入:java Test aaa bb c 回车后输出的结果是 ( A )。
public class Test {
public static void main(String args[]) {
int k1=args.length;
int k2=args[1].length();
System.out.print(k1+" "+k2);
}
}
A. 3 2 B. 1 2 C. 1 3 D. 3 3
14、A 类中定义如下方法:
public static void change(String str){ str+="xyz"; }
则以下代码块输出结果是:( A ) 值传递!
String str="abc"; A.change(str); System.out.println(str);
A. abc B. xyz C. abcxyz D. xyzabc
15、定义 String s="hello world"; 以下操作不合法的是( B )
A、int i=s.length(); B、 s>>>=2; C、String ts=s.trim(); D、char ch=s.charAt(0);
15、String 类的 indexOf()方法如未能找到所指定的子字符串,那么其返回值为( B )
C、0
B、-1
D、true
A、false
16、当用 private 修饰的成员变量时,以下选项正确的是( C )
A.可以被三种类访问:该类自身、与它在同一包中的其他类、在其他包中的该类的子类
B.可以被两种类访问:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被在同一个包中的类访问
17、以下 Java 描述正确的是( D )
A、一个包中不能包含多个类 B、一个源文件中,可以有多个 public 类
C、同一个包的类不可以相互访问 D、系统会为源文件创建默认的包
18、在 Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同。这种面向对
象程序的特性称为( C )。
A、隐藏 B、覆盖 C、重载 D、继承
19、Java 的访问修饰符具有不同的访问权限,按从小到大排序正确是( C )
A. private
B、一个类不可实现多个接口
D、实现一个接口必须实现接口的所有方法
25、下列有关接口的说法,正确的是( D )
A、接口与抽象类是相同的概念
C、接口之间不能有继承关系
26、以下哪个接口的定义是正确的( D ) 注:A1、A2 为已定义的接口
A、 interface B { void print() { } ;}
B、 abstract interface B { void print() ;}
C、 interface B extends A1 { int x; }
D、 interface B extends A1,A2{ }
27、B 是一个抽象类,C 是 B 的非抽象子类,下列创建对象 x 的语句中正确的是( B )
A. B x= new B( ); B. B x= new C( ); C. C x= new B( ); D. C x= C( );
28、程序输出结果( A )
public class test {
public static int f( final int i ) {
return ++i;
}
public static void main(String[] args) {
System.out.print(f(2));
}
D、3
B、2
C、0
B.用来调用父类中被重写的方法
D.以上都是
}
A、编译出错
29、关键字 super 的作用是( D )
A.用来访问父类被隐藏的非私有成员变量
C.用来调用父类的构造函数
30、有关 JFrame 描述不正确的是( D )
A.JFrame 是一个顶层容器 B.JFrame 支持多线程
C.JFrame 默认布局是 BorderLayout D.JFrame 中不能包含其他容器
31、Swing 的选项面板是( A )。
A.JTabbedPane
32、关于异常处理,以下说法错误的是( D )
A.可以使用 throw 语句抛出异常
B.程序可以使用 try、catch、finally 语句捕获异常
C.无论 try 块中是否发生异常,finally 标识的代码块都会被执行
D.try 语句后只能有一个 catch 语句
33、Java 异常处理用法中,错误的是( C )
A、try...catch B、try...finally C、catch...finally D、try...catch...finally
34、所有的异常类皆继承哪一个类?( C )
A.java.io.Exception B.java.lang.Throwable C.java.lang.Exception D.java.lang.Error
35、int x= Integer.parseInt("12.34");会导致的异常是( D )
B.JLayeredPane
C.JScrollPane
D.JSplitPane
A. NullPointerException B. ClassCastException
C. ArithmeticException D. NumberFormatException
36、下列字节输入流中,( B )不能够直接被实例化。
A、FileInputStream B、FilterInputStream
C、PipedInputStream D、ObjectInputStream
37、在以下集合框架中,插入性能最高的是( B )
A.ArrayList
38、以下哪个选项不是继承自 Collection 接口( C )
A.List
C.Map
39、下面代码错误定义的是( A )
B.LinkedList
D.Array
B.Set
C.List
D.Collection
class Test { // A
private int i=1; // B
Test(){ }; // C
abstract void bb(); // D
public void cc() {
i++; }
}
40、下列程序段执行后的结果是( B )
String s = new String("abcdefg");
for (int i=s.length()-1; i>=0; i-=2){
System.out.print(s.charAt(i));
}
A.aceg B. geca C.defg D.abcd
41、下面程序输出的结果是 ( A )
String s1=new String("abc");
String s2=new String("abc");
boolean b1=s1.equals(s2);
boolean b2=(s1==s2);
System.out.print(b1+" "+b2);
A.true false B.false true C.true true D.false false
42、有以下程序片段,下列哪个选项不能插入到行 1。( A )
1.
2.public class A{
3. //do sth
C、class B{ }
D、import java.util.*;
B、package mine;
public int max( int a, int b) { }
4.}
A、public class B{ }
43、类 ABC 定义如下:
1.public class ABC{
2.
3.
4.}
将以下哪个方法插入行 3 是不合法的。( B )
A、public float max(float a, float b, float c){ }
B、public int max (int c, int d){ }
C、public float max(float a, float b){ }
D、private int max(int a, int b, int c){ }
44、将以下哪个方法的定义插入第 6 行后,不会引发编译错误?( B )
1. class Super{
2. public void a(){ }
3. }
4.
5. public class Sub extends Super{
6.
7.}
A.public int a(){return 1;} B.public int a(int x){ return x; }
C.void a(){ } D.public int a(float x){return x;}
45、下面描述不能使程序通过编译的是( D )
1. class Super{
private int a;
protected Super(int a){this.a = a;}
2.
3.
4. }
11. class Sub extends Super{
12. public Sub(int a){ super(a);}
13. public Sub(){this.a = 5;}
14. }
A. 删除第 13 行
B. 将第 13 行改为:public Sub(){ this(5);}
C. 将第 13 行改为:public Sub(){ super(5);}
D. 将第 13 行改为:public Sub(){ }
46、下列软件包中,不需要使用 import 指令就可直接使用的是( A )。
A、java.lang B、java.text C、java.sql D、java.util
47、下面的 Inner 类编译后生成的 class 文件名为( B )
public class Outer {
public class Inner {
//
}
}
A. Inner.class B. Outer$Inner.class
C. Outer.Inner.class D. Outer.class
48、下列关于 Java 线程的说法正确的是( A )
A、每一个 Java 线程可以看成由代码、一个虚拟的 CPU 以及数据三部分组成
B、创建线程必须继承 Thread 类
C、Thread 类属于 java.util 包
D、使用 new Thread(new XXX()).run();方法启动一个线程
49、解决多线程并发问题,使用( C )修饰代码块。
A、final B、supper C、synchronied D、static
50、如下代码创建一个新线程并启动线程,( C )可以保证正确创建 target 对象。
public static void main(String[] args) {
Runnable target=new MyRunnable( );
Thread t=new Thread(target);
}
A、public class MyRunnable extends Runnable {
public void run( ) { }
}
B、public class MyRunnable extends Runnable {
void run( ) { }
}
C、public class MyRunnable implements Runnable {
public void run( ) { }
}
D、public class MyRunnable implements Runnable {
void run( ) { }
}
51、当线程调用 start( )后,其所处状态为( C )
A、阻塞状态 B、运行状态 C、就绪状态 D、新建状态
52、如果采用继承 Thread 类的方式创建线程,则需要重写 Thread 类的( D )方法
A.start
53、以下说法中关于线程通信的说法错误的是( D )
A、可以调用 wait()、notify()、notifyAll()三个方法实现线程通信
C.interrupt
B.stop
D.run
D.图像流
C.字节流
B.对象流
B.java.io.Serializable
D.java.lang.Comparable
B、wait()、notify()、notifyAll()必须在 synchronized 方法或者代码块中使用
C、wait()有多个重载的方法,可以指定等待的时间
D、wait()、notify()、notifyAll()是 Object 类提供的方法,子类可以重写
54、关于 sleep()和 wait(),以下哪个选项描述错误的是( D )
A.sleep 是线程类的方法,wait 是 Object 类的方法
B.sleep 不释放对象锁,wait 放弃对象锁
C.sleep 暂停线程、但监控状态仍然保持,结束后会自动恢复
D.wait 后进入等待锁定池,只有针对此对象发出 notify 方法后获得对象锁进入运行状态
55、要使对象具有序列化能力,则该类应实现以下哪个接口( B )
A.java.lang.CharSequence
C.java.lang.Cloneable
56、下列( D )是 Java 语言中所定义的字节输入流。
A、OutputStream B、Reader C、Writer D、InputStream
57、Java 中的抽象类 Reader 和 Writer 所处理的流是( A )。
A.字符流
58、下列选项中, ( B )不含于包 java.sql。
A、Statement B、Class C、Connection D、ResultSet
59、下面的描述错误的是 ( B )
A、Statement 的 executeQuery()方法会返回一个结果集。
B、Statement 的 executeUpdate()方法会返回是否更新成功的 boolean 值。
C、ResultSet 中的 getString()可以获得一个对应于数据库中 char 类型的值。
D、ResultSet 中的 next()方法会使结果集中的下一行成为当前行。
60、下面( D )方法可以用来加载 JDBC 驱动程序。
A、java.sql.DriverManager 的 getDriver 方法
B、java.sql.DriverManager 的 getConnection 方法
C、java.sql.Statement 的 executeUpdate 方法
D、java.lang.Class 的 forName 方法
61、JDBC 执行完 SQL 语句 SELECT name,address FROM employee,能得到 rs 的第一列数据的选项是( B )
A.rs.getString(0);
62、使用以下哪个类可实现不可靠的数据报传输 ( D )
A.Applet
63、关于 Socket 通信编程,以下选项错误的是( D )
A.服务器端通过 new ServerSocket()创建 TCP 连接对象
B.服务器端通过 TCP 连接对象调用 accept()方法创建通信的 Socket 对象
C.客户端通过 new Socket()方法创建通信的 Socket 对象
D.客户端通过 new ServerSocket()创建 TCP 连接对象
64、在 Java 网络编程中,使用客户端套接字 Socket 创建对象时,需要指定( A )
A. 服务器主机名称和端口
C. 服务器名称和文件
65、ServerSocket 的监听方法 accept( )方法的返回值类型是( A )
B.rs.getString("name"); C.rs.getString(name); D.rs.getString("0");
B. 服务器端口和文件
D. 服务器地址和文件
D.DatagramSocket
C.InetAddress
B.ServerSocket
A. Socket
B. Void
C. Object
D. DatagramSocket
二、填空题
1、面向对象程序设计的三个特征是__封装__、__继承__和__多态__。
2、Java 的 char 类型占用的内存字节数为__2__,double 类型占用的内存字节数为__8__。
3、Java 布尔类型的常量有两种,它们是__true__和__false___,占用的内存字节数为__1__。
4、子类对父类继承来的方法重新定义称为__覆盖__,同一个类中多个方法具有相同的方法名而参数列表不同,称为
方法的____重载______。
5、this 指__当前对象__,super 指__父对象__。
6、接口声明中只能有__常量____和__抽象方法____。
7、带有__final___修饰符的类称为最终类,这种类将不能被继承。__静态__代码块只会初始化一次,且在类被第一
次装载时。
8、Java 语言中,__Object___是所有对象的根类。被声明为___static___的内部类自动地成为顶层类。
9、可以调用 String 类的___ valueOf ()__方法将数值转化为字符串。
10、创建线程类时,必须重写的方法是__run()__。线程通过调用__sleep()__方法可以休眠一段时间,然后恢复运行。
11、编写一个线程通常通过继承__Thread 类__和实现__Runnable 接口__来实现。
12、在执行 Java 线程的程序中,程序通过调用__start()__启动线程,线程启动后运行的是__run()__方法里的代码。
13、处于运行状态的线程在某些情况下,如执行了 sleep()方法,或等待 I/O 设备等资源,将让出 CPU 并暂时停止自
己的运行,进入____阻塞_____状态。
14、在线程通信中,调用__wait()__可以使当前线程处于等待状态,而为了唤醒一个等待的线程,需要调用的方法是
____notify()____或____notifyAll()____。
15、上题的三个方法都是____Object____类提供的 public 方法,所以任何类都具有这三个方法。
16、线程中____notifyAll_____的作用是,唤醒 wait 队列中的所有的线程并把它们移入锁申请队。
17、获取 Map 集合大小的方法是__size()__。清空 List 集合的方法是__clear()__。
18 、 Java 集 合 中 一 种 以 Key-Value 方 式 存 取 数 据 的 接 口 是 ___Map_____ , 它 提 供 的 ___keySet()___ 方 法 和
___entrySet()___常用于集合遍历操作。
19、List 接口提供两种遍历器,分别是__Iterator__和__ListIterator__。
20、Collection 接口的特点是元素是___无序可重复___,List 接口的特点是元素是___有序可重复___,Set 接口的特
点是元素是___无序不可重复___。
21、Java 集合框架的顶层接口是____Collection____和____Map____。
22、___Comparable___是在集合内部实现的排序,___Comparator____是在集合外部实现的排序。
23、Java 的输入输出流包括字节流、___字符流___、___文件流___、对象流以及多线程之间通信的管道流。字节流
和字符流的区别在于每次读写的____字节_____数不同。
24、凡是从外部设备流向内存的数据流,称之为___输入流___;反之,称之为___输出流___。
25、所有字节输入流都从___InputStream___类继承,所有字节输出流都从___OutputStream___类继承。
26、与用于读写字节流的 InputStream 类和 OutputStream 类相对应,Java 还提供了用于读写 Unicode 字符的字符流
___Reader___类和___Writer___类。
27、File 类也虽然在 java.io 包中,但它不是 InputStream 或者 OutputStream 的子类,因为它不负责输入输出,而专
门用来管理___文件___和___目录___。
28、_____BorderLayout______布局管理器把容器内的空间划分为东、西、南、北、中五个区域。
29、___FlowLayout___布局管理器将容器中的组件按照加入的先后顺序从左至右排列。
30、___GroupLayout___布局管理器将组件按层次分组,以决定它们在 Container 中的位置。
31、可使用____ButtonGroup____类将若干个单选按钮归组。
32、___System.out___是一个 PrintStream 对象,它指向运行 Java 应用程序的终端窗口。___System.in___是一个
InputStream 对象,它指向用户的键盘。
33、Socket 是由____IP 地址____和____端口号____组成。
34、JDBC 执行一个 Select 语句后的结果集是一个___ResultSet___类型,它是 Statement 对象的___executeQuery()___
方法得到的。
三、程序填空
1、以下程序片段打印字符串数组中的元素,并捕获数组下标越界异常。
int i = 0;
String course[] = { "Java", "Java EE", "Android" };
while (i < 4) {
____try____ {
System.out.println( course[i] );
} catch (____ArrayIndexOutOfBoundsException e _____) {
System.out.println("数组下标越界啰!");
e.printStackTrace();
}
i++;
}
2、下列代码片段用于输出数组 x 的最大值和最小值。
int[] x={125,21,5,168,98};
int max=x[0];
int min=x[0];
for(int i=1;i max___ ) max =x[i];
if( ___x[i]< min___ ) min =x[i];
}
System.out.println(max);
System.out.println(min);
3、已知 SonClass 是 FatherClass 的一个子类,下面代码片段用于恢复子类对象的功能。
FatherClass fa = new SonClass();
if( fa _____instanceof_____ SonClass ) {
SonClass s=(_____SonClass_____) fa;
s.sonMethod();
}
4、程序填空
public class A {
public int a;
public A(int a){
________ this.a=a ____________;
}
}
public class B extends A {
public int b;
public B(int x,int y){
______super(x)______________;
b=y;
}
public void sum(){
System.out.print(a+b);
}
}
5、两种方式遍历 intArr 数据组
public class test {
public static void main(String[] args) {
int [ ] a = { 1, 2, 3, 4, 5 };
for( _____ int e:a_____ ) {
System.out.println(e);
}
for( int i=0; i<____a.length___; i++) {
System.out.println(a[i]);
}
}
}