一、单项选择题
1. 在异常处理中,如释放资源.关闭文件.关闭数据库等由( C )来完成
A. try子句
B. catch子句
C. finally子句
D. throw子句
2. int a=10,b=4,c=20,d=6; System.out.println(a++*b+c*--d); 的结果为( C )
A. 144
B. 28
C. 140
D. 不能执行
解析:++的优先级比*高
3.Java程序的执行过程中用到一套JDK工具,其中javac.exe是指( C )
A. Java文档生成器
B. Java解释器
C. Java编译器
D. Java类分解器
4. 已知如下代码,哪句语句会导致错误( 15 )
5. 以下哪个不是Java的原始数据类型( B )
A.int B. Boolean
C.float D.char
解析:Boolean是包装类,不是基本数据类型
6. 关于继承的说法正确的是:( B)
A. 子类将继承父类所有的属性和方法。
B. 子类将继承父类的非私有属性和方法。
C. 子类只继承父类public方法和属性
D. 子类只继承父类的方法,而不继承属性
解析:AB有争议,建议B 主要考虑final
7. 在使用interface声明一个接口时,只可以使用____修饰符修饰该接口。(D )
A.private B.protected C.private protected D.public
8.下列代码的输出结果是 :(A)
class Parent{
void printMe() {
System.out.println("parent");
}
}
class Child extends Parent {
void printMe() {
System.out.println("child");
}
void printall() {
super.printMe();
this.printMe();
printMe();
}
}
public class Test_this {
public static void main(String args[]) {
Child myC=new Child();
myC.printall();
}
}
A.parent child childB.parent child parent
C.parent child D.编译错误 解析:super和this是调用构造方法时只能放在程序的第一行
9.覆盖与重载的关系是 (A)
A. 覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
B. 覆盖方法可以不同名,而重载方法必须同名
C. final修饰的方法可以被覆盖,但不能被重载
D. 覆盖与重载是同一回事
10.下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是( D )。
import java.io.*;
public class Test {
public static void main(String args[]) {
try {
String s="ABCDE";
byte b[]=s.getBytes();
FileOutputStream file=new FileOutputStream("test.txt",true);
file.write(b);
file.close();
} catch(IOException e) {
System.out.println(e.toString());
}
}
}
A. ABCABC
B. ABCDE
C. Test
D. ABCDEABCDEABCDE 解析:true 追加
11.下面那个表达式在编译的时候会出现错误( A )
A. short s1 = 1; s1 = s1 + 1; 解析:++会进行强制类型转换,A不会
B. short s1 = 1; s1 += 1;
C. short s1 = 1; s1 += s1;
D. short s1 = 1; s1 ++;
12. 下面代码输出结果是(C)
public class Test {
public static void main(String args[]) {
int x = 10;
int y = 10;
if (x = y)
System.out.println("Equal!");
else
System.out.println("Not equal!");
}
}
A. Equal!
B. Not equal!
C. 编译错误 解析:第5行编译错误
D. 三个答案都不对
13.以下程序执行结果是(A)
public class Test{
public static String result="";
public static void foo(int i){
try {
if(i==1){
throw new Exception();
}
result +="a";
}
catch(Exception e){
result+="b";
return;
}
finally{
result+="c";
}
result+="d";
}
public static void main(String args[]){
foo(0);
foo(1);
}
}
A. acdbc B. acbcd C. acdbcd D. acdb 解析:注意catch里的return
14. 以下程序运行结果是(D)
1) public class Test {
2) public static void main(String[] args) {
3) class InnerClass {
4) public String str = "String!";
5) }
6) Object obj = (Object) new InnerClass();
7) InnerClass ic = (InnerClass) obj;
8) System.out.println(ic.str);
}
}
A. 在第6行出现编译错误 解析:在内部new的对象,应该用上面的方式
B. 在第7行出现编译错误
C. 在第8行出现编译错误
D. 控制台输出 String!
15.以下哪个方法用于定义线程的执行体?( C )
A. start()
B. init()
C. run()
D. synchronized()
16. 以下不属于面向对象的特征的是(A )
A. 重载
B. 多态
C. 封装
D. 继承
17.以下描述不正确的是( D )
A. try块不可以省略
B. 可以使用多重catch块
C. finally块可以省略
D. catch块和finally块可以同时省略
18. 下面哪个流类属于面向字符的输入流? ( D )
A. BufferedWriter
B. FileInputStream
C. ObjectInputStrearn
D. InputStreamReader
19. String s = new String("xyz");创建了几个String Object? ( B )
A. 1 B. 2 解析:有争议,建议选B
C. 3 D. 1个或2个
20. 下列关于修饰符混用的说法,正确的是( A )
A. abstract不能与final并列修饰同一个类
B. abstract类中原则上不可以有private的成员
C. static方法中能处理非static的属性
D. abstract方法不一定在abstract类中
21. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈得输出序列的是( A )
A. 5 4 1 3 2
B. 2 3 4 1 5
C. 1 5 4 3 2
D. 2 3 1 4 5
22. 关于以下程序代码的说明正确的是:( D )
1. public class HasStatic{
2. private static int x=100;
3. public static void main(String args[]){
4. HasStatic hs1=new HasStatic();
5. hs1.x++;
6. HasStatic hs2=new HasStatic();
7. hs2.x++;
8. hs1=new HasStatic();
9. hs1.x++;
10. HasStatic.x--;
11. System.out.println("x="+x);
12. }
13. }
A、 程序通过编译,输出结果为:x=103
B、 10行不能通过编译,因为x是私有静态变量
C、 5行不能通过编译,因为引用了私有静态变量
D、 程序通过编译,输出结果为:x=102
23. 定义字符串:String s1="hello";对下面程序描述正确的是:( D )
if(s1=="hello"){
System.out.println("s1 = \"hello\"");
}else{
System.out.println("s1 !=hello");
}
A. 输出 s1 !=hello 解析:\”代表一个双引号字符
B. 编译正确,运行错误
C. 产生编译错误
D. 输出 s1="hello"
24. 下面哪个Set是排序的?( D )
A. LinkedHashSet
B. HashSet
C. AbstractSet
D. TreeSet
25. 假设test类运行于多线程环境下,那么关于A处的同步下面描述正确的是?( D )
public class Test {
List list= new java.util.ArrayList();
public void test() {
synchronized ( list) { // --A
list.add( String.valueOf(System.currentTimeMillis()));
}
}
}
A. test方法中必须增加synchronized
B. Test类为singleton时有必要增加synchronized
C. test方法中没有必要增加synchronized
D. Test类为singleton时也没有必要增加synchronized
26.执行下面代码,下面描述正确的是:( D )
public class Person{
static int arr[] = new int[10];
public static void main(String a[]){
System.out.println(arr[1]);
}
}
A. 产生编译错误
B. 输出空
C. 编译正确,运行错误
D. 输出0
27. 下列说法正确的是(C)
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor
28、哪个关键字可以抛出异常? (C)
A. transient B. finally
C. throw D. static
29. 如果你被要求写一段代码读取一个文本文件,那么一般使用哪种Stream? ( D )
A. DataInputStream
B. ObjectInputStream
C. FileWriter
D. FileInputStream
30. 执行如下两个查询,结果为:(A )
SELECT ename name, sal salary FROM emp order by salary;
SELECT ename name, sal "SALARY" FROM emp order by sal ASC;
A. 两个查询结果完全相同 解析:用别名可以实现同样的效果
B. 第一个查询正确,第二个查询错误
C. 两个查询结果不同
D. 第二个查询正确,第一个查询错误