一、单项选择题

1.二进制数 11101 转化为十进制数是( )。

A23  B17  C26  D29

2.以下可以对对象加互斥锁的关键字是( )。

Asynchronized  Bserialize Cvolatile  Dstatic

二、不定项选择题

3.下列关于类的构造方法的描述中,正确的是( )。

A.类中的构造方法不可省略

B.构造方法必须与类同名,但方法不能与class 同名

C.构造方法在一个对象被 new 时执行

D.一个类只能定义一个构造方法

4.下列关于 Java 语言中 main 方法的描述中,正确的是( )。

AJava 程序的 main 方法必须写在类里面

BJava 程序中可以有多个 main方法

CJava 程序的 main 方法中,如果只有一条语句,可以不用大括号{}括起来

DJava 程序中类名必须与文件名一样

5.在类声明中,声明一个类不能再被继承的关键字是( )。

Aprivate  Babstract Cfinal Dstatic



答案解析


一、单项选择题

1.二进制数 11101 转化为十进制数是( )。

A23  B17  C26  D29

答案:D。

分析:本题考察的是进制转换的知识。本题中,二进制数 11101 对应的十进制数表示为 1*2^0 + 0*2^1 + 1*2^2 +1*2^3 + 1*2^4= 29,所以,选项 D 正确。除了人工转换外,在 Java 语言中,也可以用如下方法将一个二进制数转换为十进制数:Integer.valueOf("11101",2) 。所以,本题的答案为 D。


2.以下可以对对象加互斥锁的关键字是( )。

Asynchronized  Bserialize Cvolatile  Dstatic

答案:A。

分析:本题考察的是 Java 关键字的知识。对于选项 A,synchronized(同步的)是 Java 语言的关键字,主要用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块时,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象中的这个加锁同步代码块时,同一时间只能有一个线程执行。所以,选项 A 正确。

对于选项 B,serialize 是序列化的意思,所谓对象的序列化指的是把对象转换为字节序列的过程,所谓对象的反序列化指的是把字节序列恢复为对象的过程。通常,对象的序列化主要有以下两种用途:

①将对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

②在网络上传送对象的字节序列。在 Java 语言中,序列化通过 Serializable 接口来实现。所以,选项 B 不正确。

对于选项 C,在由 Java 语言编写的程序中,有时候为了提高程序的运行效率,编译器会做一些优化操作,把经常被访问的变量缓存起来,程序在读取这个变量的时候有可能会直接从寄存器中读取这个值,而不会去内存中读取。这样做的一个好处是提高了程序的运行效率,但当遇到多线程编程时,变量的值可能被其他线程改变了,而该缓存的值不会做相应的改变,从而造成应用程序读取的值和实际的变量值不一致。关键字 volatile 正好能够解决这一问题,被关键字 volatile 修饰的变量编译器不会做优化,每次都会从内存中读取。所以,选项 C 不 正确。

对于选项 D,关键字 static 主要有以下两种作用:第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。总之,被 static 修饰的属性(方法)是类的属性(方法),不属于任何对象。所以,选项 D 不正确。

所以,本题的答案为 A。

二、不定项选择题

3.下列关于类的构造方法的描述中,正确的是( )。

A.类中的构造方法不可省略

B.构造方法必须与类同名,但方法不能与class 同名

C.构造方法在一个对象被 new 时执行

D.一个类只能定义一个构造方法

答案:C。

分析:本题考察的是 Java 语言构造方法的知识。对于选项 A,类中的构造方法是可以省略的,当省略的时候,编译器会提供一个默认的构造方法以供使用。因此,选项 A 错误。对于选项 B,构造方法必须与类名相同,但是方法名也可以与类名相同。如下例所示:

public class Test{

public Test(){

System.out.println("construct");

}

public void Test(){

System.out.println("call Test");

}

public static void main(String[] args) {

Test a = new Test(); //调用构造方法

a.Test(); //调用 Test 方法

}

}

程序的运行结果为

construct

call Test

因此,选项 B 错误。对于选项 C,当一个对象被 new 的时候必定会调用构造方法。因此,选项 C 正确。对于选项 D,由于构造方法也可以重载,所以,一个类可以定义多个构造方法。因此,选项 D 错误。所以,本题的答案为 C。

4.下列关于 Java 语言中 main 方法的描述中,正确的是()。

AJava 程序的 main 方法必须写在类里面

BJava 程序中可以有多个 main方法

CJava 程序的 main 方法中,如果只有一条语句,可以不用大括号{}括起来

DJava 程序中类名必须与文件名一样

答案:A、B。

分析:本题考察的是 Java 基本语法的知识。

在 Java 语言中,main 方法是程序的入口方法,一个程序要想运行必须要有 main 方法,但是只有满足特定条件的 main 方法才能作为程序的入口方法。对于本题而言:对于选项 A,由于 Java 语言是纯面向对象语言,所以,所有的属性与方法都必须定义在类里面,而且,main 方法也不例外。因此,选项 A 正确。对于选项 B,Java 程序可以定义多个 main 方法,但是只有 public static void main(String[]args)方法才是 Java 程序的入口方法,其他 main 方法都不是,并且这个入口方法必须被定义在类名与文件名相同的被 public 修饰的类中,如下例所示(Test.java):

class T{

public static void main(String[] args) {

System.out.println("T main");

}

}

public class Test {

// 程序入口方法

public static void main(String[] args) {

System.out.println("Test main");

}

}

程序的运行结果为Test main从上例可以看出,这个程序中定义了多个 main 方法,但是只有满足特定条件的 main 方法才能作为程序的入口方法。因此,选项 B 正确。对于选项 C,在 Java 语言中,不管方法体里有几条语句,所有的方法体都必须用大括号{}括起来。因此,选项 C 错误。对于选项 D,在 Java 语言中,一个文件内部可以有多个类的存在,但只有被 public 修饰的类的名字与文件的名字相同,其他类的名字可以根据需求随意起名字。因此,选项 D 错

误。所以,本题的答案为 A、B。

5.在类声明中,声明一个类不能再被继承的关键字是( )。

Aprivate  Babstract Cfinal Dstatic

答案:C。

分析:本题考察的是 Java 关键字的知识。

对于选项 A,关键字 private 是一个作用域修饰符,被关键字 private 修饰过的变量或方法只有当前类或对象具有访问权限。所以,选项 A 不正确。对于选项 B,在 Java 语言中,可以通过把类或者类中的某些方法声明为 abstract 来表示一个类是抽象类。所以,选项 B 不正确。

对于选项 C,被 final 修饰的变量为常量,当一个方法被声明为 final 时,该方法不允许任何子类重写,当一个类被声明为 final 时,此类不能被继承,所有方法都不能被重写。所以,选项 C 正确。

对于选项 D,关键字 static 主要有两种作用:第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关;第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。即被 static 修饰的属性(方法)是类的属性(方法),不属于任何对象。所以,选项 D 不正确。

所以,本题的答案为 C。