第1章–第3章测试题
1、下列关于for语句的描述中,错误是的( )。
A、for语句能够实现的功能一定可以用while语句来实现
B、for语句用于循环控制
C、for语句只能用于循环次数已知的场景
D、for语句的执行属于先判断后执行
正确答案: C
2、while循环和 do…while循环的区别是( ) 。
A、while循环是先循环后判断,所以循环体至少被执行一次
B、while循环比 do…while循环执行效率高
C、do…while循环是先循环后判断,所以循环体至少被执行一次
D、没有区别,这两个结构任何情况下效果一样
正确答案: C
3、对于语句“int a[ ] = new int [3];”,下列描述中错误的是( )。
A、a.length的值是3
B、a[1]的值是1
C、a[0]的值是0
D、a[2]的值等于a[a.length-1]的值
正确答案: B
4、a假设已经定义了整型数组a,并对其每个元素进行赋值,并如下代码:
int p = 0;
for(int i=1;i<a.length;i++){
if(a[p]>a[i]) p=i;
}
System.out.println(a[p]);
上述代码的功能是( )。
A、输出数组a中所有元素最小值的下标
B、输出数组a中所有元素的最大值
C、输出数组a中所有元素的最小值
D、输出数组a中所有元素最大值的下标
正确答案: C
5、下列关于Java程序描述中,错误的是( )。
A、一个Java源文件可以定义多个类
B、一个Java应用程序可以有多个Java源文件
C、一个Java源文件不能定义多个公共类
D、类名必须与文件名相同
正确答案: D
6、下列有关多维数组的描述中,错误的是( )。
A、在二维数组中,为了确定表示某个元素,需要提供两个下标
B、Java中数组的维数不能超过3
C、多维数组中每一维的下标都是从0开始
D、要对三维数组进行遍历,一般采用三重循环实现
正确答案: B
7、下面关于switch语句的描述中,错误的是( )。
A、default语句块必须放在switch语句的最后
B、switch语句中可以不包含default语句块
C、一条switch语句可以包含多个分支
D、switch语句中的分支语句块可以有break语句,也可以没有break语句
正确答案: A
8、不能在其中使用break语句的语句是( )。
A、switch语句
B、do~while语句
C、if语句
D、for语句
正确答案: C
9、常量0.6332的数据类型是( )。
A、double
B、Double
C、float
D、Float
正确答案: A
10、对二维数组进行遍历,( )。
A、必须采用先行后列的顺序
B、必须采用先列后行的顺序
C、可以使用单重循环
D、必须使用双重循环
正确答案: C
11、在jdk目录中,表示java运行时环境的目录是( )。
A、lib
B、bin
C、demo
D、jre
正确答案: D
12、下列有关break语句与continue语句的描述中,错误的是( )。
A、do~while语句中不用使用continue语句
B、break语句可用于switch语句,但continue语句不能用于switch语句
C、break语句用在for语句中时,用于结束整个for循环
D、continue语句用在for语句中时,用于结束循环体的当次执行,继续一次循环
正确答案: A
13、下列关于Java程序编译的描述中,正确的是( )。
A、java程序经编译后会产生字码节文件
B、java程序经编译后会产生DLL(动态链接库文件)
C、以上都不正确
D、java程序经编译后会产生本地可执行文件(机器码文件)
正确答案: A
14、对一维数组进行排序时,( )。
A、若选择排序算法,可以让后面的元素先变得有序
B、若选择冒泡算法,则必须让后面的元素先变得有序
C、若选择冒泡算法,则必须让前面的元素先变得有序
D、若选择排序算法,则必须让前面的元素先变得有序
正确答案: A
15、下列关于while语句的描述中,正确的是( )。
A、while语句的循环体中不可以再使用while语句
B、while语句的条件式不能是恒真值(例如true)
C、已知循环次数和未知循环次数的场景都可以用while语句
D、while语句的执行流程属于先执行后判断
正确答案: C
16、下列字符序列中,合法Java标识符的是( )。
A、good-class
B、false
C、default
D、_int
正确答案: D
17、不能构成循环的语句是( )。
A、do while语句
B、while语句
C、for 语句
D、switch语句
正确答案: D
18、score是一个整数数组,有五个元素,已经正确初始化并赋值,则下面程序的运行结果是( )。
temp = score[0];
for (int index = 1;index < 5;index++) {
if (score[index] < temp) {
temp = score[index];
}
}
A、求最大数
B、找到数组最后一个元素
C、求最小数
D、编译出错
正确答案: C
19、下列关于System.out的描述中,错误的是( )。
A、在使用System.out.println()方法时必须要提供一个参数
B、System.out表示标准输出(控制台)
C、System.out.print()方法可以输出各种基本数据类型的值
D、System.out.println()方法在输出数据的同时,会输出一个换行符
正确答案: A
20、下列Java命令中,用于编译HelloWorld.java文件的是( )。
A、javac HelloWorld.java
B、java HelloWorld.java
C、javac HelloWorld
D、java HelloWorld
正确答案: A
21、已知使用语句:
Scanner reader = new Scanner(System.in);
创建了Scanner类的对象reader,则从键盘中读取一个整数的方法是( )。
A、int n = reader.hasNext();
B、int n = reader.readInt();
C、int n = reader.nextInt();
D、int n = reader.read();
正确答案: C
22、下列关于java自动类型转换的说法中,正确的是( )。
A、double类型可以自动转换为int
B、char类型和int类型相加结果一定是字符
C、基本数据类型和String相加结果一定是字符串型
D、char + int + double +”” 结果一定是double
正确答案: C
23、已知语句
int m [ ] = {0,1,2,3,4,5,6};
用于表达数组元素个数的表达式是( )。
A、m.length
B、m.length+1
C、m.length()
D、m.length()+1
正确答案: A
24、若数组元素已经有序,查找元素速度最快的算法是( )。
A、随机查找
B、顺序查找
C、逆序查找
D、二分查找
正确答案: D
25、要对一个数组进行遍历,( )。
A、必须使用for语句
B、必须使用switch语句
C、可以使用while语句
D、必须使用if语句
正确答案: C
26、不是java语言正确注释的是( )。
A、/**This is comment*/
B、/*This is comment
C、//This is comment
D、/*This is comment*/
正确答案: B
27、不是属于面向对象程序设计语言特点的是( )。
A、抽象
B、结构化
C、多态
D、继承
正确答案: B
28、运算符优先级从高到低排序正确的是( )。
A、由高向低分别是:()、!、关系运算符、赋值运算符、算术运算符、逻辑运算符
B、由高向低分别是:()、!、算术运算符、关系运算符、逻辑运算符、赋值运算符
C、由高向低分别是:()、算术运算符、逻辑运算符、关系运算符、!、赋值运算符
D、由高向低分别是:()、关系运算符、算术运算符、赋值运算符、!、逻辑运算符
正确答案: B
29、下面有关for循环的描述中,正确的是( )。
A、for循环只能用于循环次数已经确定的情况
B、for循环体语句中,可以包含多条语句,但要用大括号括起来
C、在for循环中,不能使用break语句跳出循环
D、for循环是先执行循环体语句,后进行条件判断
正确答案: B
30、Java字节码的扩展名是( )。
A、*.class
B、*.byte
C、*.exe
D、*.java
正确答案: A
31、下列有关变量命名规范的说法中,正确的是( )。
A、不同类型的变量,可以起相同的名字
B、变量由字母、下划线、数字、$符号随意组成
C、A和a在java中是同一个变量
D、变量不能以数字作为开头
正确答案: D
32、在Java中,负责对字节代码解释执行的是( )。
A、垃圾回收器
B、编译器
C、应用服务器
D、虚拟机
正确答案: D
33、下列关于if语句的描述中,错误的是( )。
A、if语句的条件式可以是关系表达式和逻辑表达式
B、代码缩进并不会影响if语句的运行功能
C、if语句可以包含else部分,也可以不包含else部分
D、关键字else后面的代码必须用{}括起来
正确答案: D
34、不属于Java程序流程结构的是( )。
A、顺序结构
B、循环结构
C、数据结构
D、选择结构
正确答案: C
35、能够正确地对数组进行初始化(或者是默认初始化)的语句是( )。
A、int[] a;
B、a = {1, 2, 3, 4, 5};
C、int[] a = new int[5]{1, 2, 3, 4, 5};
D、int[] a = new int[5];
正确答案: D
36、下列为boolean类型变量赋值的语句中,正确的是( )。
A、boolean a = = false;
B、boolean = 1;
C、boolean a=”真”;
D、boolean a = (9 >= 10);
正确答案: D
37、 System.out.println(“5” + 2);的输出结果是( )。
A、52
B、7
C、2
D、5
正确答案: A
38、下列关于数组的描述中,错误的是( )。
A、数组是引用类型
B、数组元素的下标从1开始
C、数组中的元素可以是引用类型
D、一个数组的各个元素的类型必须相同
正确答案: B
39、如果jdk的安装路径为:c:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要在环境变量path中添加( )。
A、c:\jre;
B、c:\jre\bin;
C、c:\jdk;
D、c:\jdk\bin;
正确答案: D
40、下列关于 for循环和 while循环的说法中,正确的是( )。
A、两种循环任何时候都不可以替换
B、两种循环结构中都必须有循环体,循环体不能为空
C、while循环语句可以改写成for循环语句
D、while循环先判断后执行,for循环先执行后判断。
正确答案: C
41、下面命令中,可以用来正确执行HelloWorld类的是( )。
A、java HelloWorld
B、javac HelloWorld.java
C、javac HelloWorld
D、java HelloWorld.java
正确答案: A
42、不是Java基本数据类型的是( )。
A、int
B、Boolean
C、float
D、char
正确答案: B
43、下列循环语句中,循环体至少能够执行一次的是( )。
A、for(int x=0; x>10; x++){
System.out.println(x);
}
B、while(false){
System.out.println(“Hello World”);
}
C、int x = 10;
while(x<5){
System.out.println(x);
}
D、int x = 10;
do{
x–;
System.out.println(x);
} while(x<5);
正确答案: D
44、以下关于变量的说法中,错误的是( )。
A、变量名必须是一个有效的标识符
B、变量在定义时可以没有初始值
C、在程序中,可以将一个byte类型的值赋给一个int类型的变量,不需要特殊声明
D、变量一旦被定义,在程序中的任何位置都可以被访问
正确答案: D
45、下面关于选择结构的说法中,正确的是( )。
A、switch结构中必须有default语句
B、if语句可以没有else语句对应
C、switch结构中每个case语句中必须用break语句
D、if语句和else语句必须成对出现
正确答案: B
46、下面变量声明与初始化语句中,合法的是( )。
A、int i = 4L
B、double d = 34.4
C、long 1 = 499
D、float f =1.1
正确答案: B
47、Java源文件和字节码文件扩展名分别是( )。
A、.class和.exe
B、.txt和.class
C、.java和.exe
D、.java和.class
正确答案: D
48、能够正确判断年份n是否是闰年的表达式是( )。
A、n % 4==0 || n % 400 == 0
B、n % 100 !=0 && n % 4==0 || n % 400 == 0
C、n % 4 == 0
D、n % 400 == 0 || n % 4 == 0
正确答案: B
49、JDK提供的编译器程序是( )。
A、javap.exe
B、javac.exe
C、java.exe
D、javaw.exe
正确答案: B
50、java应用程序主类中main方法的正确写法是( )。
A、static void main(String args[])
B、public static void main(String args)
C、public static void main(String args[])
D、public void main(String args[])
正确答案: C
第四章
1、使一个类的成员变量只能被同一包中的类访问,并且只能被同一个包中的子类继承的修饰符是( )。
A、(无修饰符)
B、private
C、protected
D、public
正确答案: A
2、设已声明了一个类A的两个对象a1,a2,为了初始化a1和a2,下面语句中正确的是( )。
A、a1,a2=new A();
B、a1=A.new();a2=A.new();
C、a1=new();a2=new();
D、a1=new A();a2=new A();
正确答案: D
3、下列选项中,可以导入指定包中所有类的是( )。
A、import 包名.*;
B、package 包名.*;
C、import 包名;
D、package 包名;
正确答案: A
4、下列关于包的描述中,错误的是( )。
A、一个类不能访问其它包中类的友好方法
B、一个类可以使用其它包中的公共类
C、一个类可以使用其它包中的友好类
D、包是Java语言中有效地管理类的一种机制
正确答案: C
5、下列关于方法重载的描述中,错误的是( )。
A、同一个类中允许有多个方法名相同,仅返回值类型不同的方法
B、同一个类中允许有多个方法名相同,但参数类型不同的方法
C、同一个类中允许有多个方法名相同,但参数个数不同的方法
D、同一个类中允许有多个方法名相同,但参数个数和参数类型都不同的方法
正确答案: A
6、下面关于关键字this的说法中,正确的是( )。
A、关键字this是在对象内部指代自身的引用
B、关键字this可以在类中的任何位置使用
C、同一个类的不同对象共用同一个this
D、关键字this和类关联,而不是和类的实例(对象)关联
正确答案: A
7、Java中,不是用来设置成员访问权限的关键字是( )。
A、extends
B、public
C、private
D、protected
正确答案: A
8、对象的特征在类声明中用变量表示,称为类的( )。
A、对象
B、方法
C、属性
D、数据类型
正确答案: C
9、下列关于类(静态)成员或类(静态)方法描述中,错误的是( )。
A、可以通过类的实例访问类(静态)变量
B、类(静态)方法可以访问类(静态)方法和类(静态)成员
C、类(静态)方法可以使用this关键字
D、可以通过类名直接访问类(静态)方法
正确答案: C
10、下列关于静态方法的描述中,错误的是( )。
A、静态方法只能被类调用,不能被对象调用
B、静态方法是通过”类名.方法名”的方式来调用
C、静态方法不能访问实例成员方法
D、静态方法中可以访问静态变量
正确答案: A
11、Java 类可以作为( )。
A、数据封装机制
B、上述都不对
C、类型定义机制和数据封装机制
D、类型定义机制
正确答案: C
12、下面对于构造方法的描述中,正确的是( )。
A、构造方法的返回值类型是void
B、类必须显式地定义构造方法
C、构造函数和类具有相同的名称,并且不能带任何参数
D、一个类可以定义多个构造方法
正确答案: D
13、下列关于类的成员变量与成员方法描述中,错误的是( )。
A、类的方法的参数可以是其它类
B、类的方法的返回值可以是其它类
C、类的方法的返回值不能是当前类
D、类的成员可以是其它类
正确答案: C
14、下列关于Java中封装的说法中,错误的是( )。
A、包含属性的类都必须封装属性,否则无法通过编译
B、封装就是将属性私有化,提供公共方法来访问私有属性
C、setter方法用于赋值,getter方法用于取值
D、属性的访问方法包括setter方法和getter方法
正确答案: A
15、给出如下代码:
class Test{
private int m;
public static void fun() {
//some code„
}
}
使成员变量m可以被函数fun()直接访问的修改是( )。
A、将private int m改为 protected int m
B、将private int m改为 static int m
C、将private int m改为 public int m
D、将private int m改为int m
正确答案: B
16、下列选项中关于Java封装的说法中,错误的是( )。
A、setter方法用于赋值,getter方法用于取值
B、必须对类的属性进行封装,否则无法通过编译
C、封装就是将属于私有化,并提供的公共方法访问私有属性
D、属性的访问方法包括setter方法和getter方法
正确答案: B
17、下列关于类(静态)方法的说法中,正确的有( )。
A、在类方法中可以直接调用本类的类方法
B、在类方法中可以访问实例成员变量
C、在类方法中可使用关键字this
D、在类方法中可以调用实例方法
正确答案: A
18、若在某一个类定义中定义有如下的方法:
final void aFinalFunction( ){}
则该方法属于( )。
A、最终方法
B、抽象方法
C、静态方法
D、本地方法
正确答案: A
19、已知如下代码
public class Test{
long a[] = new long[10];
public static void main ( String arg[] ) {
System.out.println ( a[6] );
}
}
下列关于上面程序的描述中,正确的是( )。
A、程序能被编译,但会发生运行时错误
B、程序不能被编译
C、程序能被编译,并输出null
D、程序能被编译,并输出0
正确答案: B
20、构造方法被调用的时机是( )。
A、类定义时
B、调用对象方法时
C、使用对象的变量时
D、创建对象时
正确答案: D
二、简答题 (题数:4,共 2)
1、阅读下面的代码,并回答问题:问题1:语句①是否合法?为什么?问题2:语句②是否合法?为什么?
class AccessControl {
public int variable1;
int variable2;
private int variable3;
}
public class Task4_12 {
public static void main(String[] args) {
AccessControl a1 = new AccessControl();
a1.variable2 = 2.0; //语句①
a1.variable3 = 3; //语句②
}
}
正确答案
语句①不合法,因为variable2是整型变量,2.0是double类型常量,double类型不能赋值给整型变量
语句②也不合法,因为variable3是AccessControl类的私有成员变量,其它类无法访问AccessControl类的对象的私有成员变量
2、阅读下面的代码,并回答问题:问题1:语句①输出的结果是什么?问题2:语句②是否合法?为什么?
class StudentScore{
private String studentID;
float score;
public StudentScore(String sID){
studentID = sID;
score = 60;
}
public StudentScore(String sID,float score){
studentID = sID;
this.score = score;
}
}
public class Project2_1 {
public static void main(String[] args) {
StudentScore score1 = new StudentScore(“15196101”);
System.out.println(score1.score); //语句①
StudentScore score2 = new StudentScore(); //语句②
}
}
正确答案
语句①输出的结果是60;
语句②不合法,因为StudentScore类没有定义没有参数的构造方法。
3、阅读下面的代码,并回答问题:问题1:语句①是否合法?为什么?问题2:语句②是否合法?为什么?
class DemoClass {
public int publicVar;
int friendVar;
private int privateVar;
}
public class Task4_12 {
public static void main(String[] args) {
DemoClass d1 = new DemoClass();
d1.publicVar = 2.0; //语句①
d1.privateVar = 3; //语句②
}
}
正确答案
语句①不合法,因为friendVar是整型变量,2.0是double类型常量,double类型不能赋值给整型变量
语句②也不合法,因为privateVar是DemoClass类的私有成员变量,其它类无法访问DemoClass类的对象的私有成员变量
4、阅读下面的代码,并回答问题:问题1:语句①输出的结果是什么?问题2:语句②是否合法?为什么?
class Account{
private String accountID;
float money;
public Account(String aID){
accountID = aID;
money = 100;
}
public Account(String aID,float money){
accountID = aID;
this.money = money;
}
}
public class Project2_1 {
public static void main(String[] args) {
Account a1 = new Account(“15196101”);
System.out.println(a1.money); //语句①
Account a2 = new Account (); //语句②
}
}
正确答案
语句①输出的结果是100;
语句②不合法,因为Account类没有定义没有参数的构造方法。
第五章
1、已知类的继承关系如下:
class Employee;
class Manager extends Employee;
class Director extends Employee;
则以下语句能通过编译的语句是( )。
A、Director d=new Manager();
B、Director d=new Employee();
C、Employee e=new Manager();
D、Manager m=new Director();
(不正确)
2、下面( )是java语言的所有类的祖先类(基类)。
A、Integer
B、Double
C、packages
D、Object
3、下列关于Java中super关键字的说法中,正确的是( )。
A、子类通过super关键字只能调用父类的属性,而不能调用父类的方法
B、super关键字是在子类对象内部指代其父类对象的引用
C、子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
4、下列关于Java类继承的描述中,正确的是( )。
A、子类不能覆盖父类定义的成员变量
B、子类只能继承父类中的公共变量和公共方法
C、一个类只能继承于单个父类
D、子类不能重写父类定义的成员方法
5、以下有关类的继承的叙述中 ,正确的是 ( )
A、子类只能继承父类的方法,不能继承父类的属性
B、子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性
C、子类不能继承父类的私有属性
D、子类只能继承父类的非私有属性,不能继承父类的方法
6、下列关于关键字final的描述中,错误的是( )。
A、用关键字final修饰的类为final类,它不可以被继承
B、用关键字final修饰的成员变量为常量,它的值不可以被修改
C、关键字final在修饰类时可以与关键字abstract同时使用
D、用关键字final修饰的方法为final方法,它不可以被子类重写
7、下列有关子类对象的描述中,错误的是( )。
A、创建子类对象时,一定会调用父类的某个构造方法
B、子类中的this表示其父类对象的引用
C、创建一个子类对象时,同时会创建一个父类对象,该子类对象拥有该父类对象的引用
D、子类对象内部中有一个隐含的成员变量super,其类型是该子类继承的父类
8、下列关于对象成员占用内存的描述中,正确是( )
A、同一个类的对象使用不同的内存空但静态成员共享相同
B、对象的方法不占用内存
C、以上都不对
D、同一个类的对象共用同一段内存
9、下列关于关键字super的说法中,错误的是( )。
A、子类可以通过super关键字调用父类的属性
B、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C、super关键字是在子类对象内部指代其父类对象的引用
D、子类可以通过super关键字调用父类的方法
10、设有两个类A、B,以下描述中表示B继承自A的是( )。
A、class A extends B
B、class B extends A
C、class A implement B
D、class B implements A
11、下列关于super、final关键字的描述中,错误的是( )。
A、子类的构造方法可以通过super()调用父类的构造方法
B、final关键字声明的方法可以被子类重写
C、final关键字声明的类不可以被继承
D、子类可以通过super关键字调用父类的方法和成员
12、下列关于抽象类的描述中,错误的是( )。
A、不可以创建抽象类的实例(对象)
B、抽象类的子类也可以是抽象类
C、抽象类的子类必须实现所有抽象方法
D、抽象方法只能定义在抽象类或接口中
13、MAX_LENGTH 是int 型public 成员变量,变量值保持为常量1,用简短语句定义这个变量。
A、public final int MAX_LENGTH=1;
B、finally public int MAX_LENGTH=1;
C、public int MAX_LENGTH=1;
D、final int MAX_LENGTH=1;
14、下列关于上转型对象的描述中,错误的是( )。
A、上转型对象访问被子类重写的方法时,执行的是该方法的子类版本。
B、把子类对象赋值给父类变量的过程称为对象的向上转型,此时该父类变量被称为上转型对象
C、上转型对象不可以访问子类新增的方法
D、子类对象不能赋值给除其父类外的其它祖先类变量
15、下列关于Java继承的描述,正确的是( )。
A、子类可以使用父类的所有方法
B、一个类可以继承多个父类
C、子类一定比父类有更多的成员方法
D、一个类可以具有多个子类
16、以下哪个关键字可用于定义成员常量( )
A、static
B、final
C、finally
D、abstract
17、下述声明中哪一种可防止该类产生子类?( )
A、public final class FooBar{}
B、private class Foobar{}
C、static class FooBar{}
D、abstract class FooBar{}
18、在下面哪种情况下,可以使用方法重写?( )
A、父类的功能无法满足子类的需求时
B、父类方法中的返回值类型不适合子类使用
C、父类方法中的形参不适用于子类使用时
D、父类中的方法在子类中没有时
19、下列关于抽象类的描述中,错误的是( )。
A、抽象方法可以用关键字final进行修饰
B、抽象方法不可以定义为私有方法
C、具有抽象方法的类必须是抽象类
D、抽象类中一般都需要定义抽象方法
20、下列关于成员变量覆盖的描述中,错误的是( )。
A、一旦在子类中定义了与父类成员变量具有相同名称的成员变量,则在子类中就无法访问父类中定义的同名成员变量
B、子类可以定义与父类成员变量具有相同名称的成员变量
C、在子类中定义的成员变量会覆盖从父类继承的同名变量
D、在子类定义的成员变量与父类中定义的同名变量可以具有不同的访问权限
二、论述题 (题数:1,共 5.0 分)
1、什么是多态,产生多态的条件是什么?(5.0分)3.0 分
多态是同一个行为具有多个不同表现形式或形态的能力。
多态存在的三个必要条件:继承、重写、父类引用指向子类对象(即对象的向上转型)
三、简答题 (题数:3,共 15.0 分)
1、下述代码的输出结果是( )
class Super {
public int getLength() {
return 4;
}
}
public class Sub extends Super {
public int getLength() {
return 5;
}
public static void main (String[]args) {
Super sooper = new Super ();
Super sub = new Sub();
System.out.printIn(sooper.getLength()+ “,” + sub.getLength() );
}
}
(5.0分)5.0 分
我的答案:
4,5
2、下列程序的输出结果是( )。
class Base{
void test() {
System.out.println(“Base.test()”);
}
}
public class Child extends Base {
void test() {
System.out.println(“Child.test()”);
}
static public void main(String[] a) {
Base baseObj = new Child();
baseObj.test();
}
}
(5.0分)5.0 分
我的答案:
Child.test()
3、阅读下面的代码,并回答问题:问题1:语句①输出的内容是什么?为什么?问题2:语句①改为“aClass.newMethod();”是否合法?为什么?
class FatherClass{
public void method(){
System.out.println(“父类的方法!”);
}
}
class ChildClass extends ParentClass{
public void method(){
System.out.println(“子类重写的方法!”);
}
public void newMethod(){
System.out.println(“子类新增的方法!”);
}
}
public class Project2_3{
public static void main(String[] args) {
FatherClass aClass = new ChildClass();
aClass.method(); //语句①
aClass.newMethod(); //语句②
}
}
(5.0分)
语句①输出的内容是“子类重写的方法!”,调用上转型对象的方法时,执行的是子类重新的方法。
不合法,因为上转型对象不能调用子类新增的方法
第6、7章
1、在java的一个异常处理中,可以出现多个的语句块是( )。
A、catch
B、finally
C、throws
D、try
正确答案: A
2、下列关于接口的描述中,正确的是( )。
A、接口必须用关键字public修饰
B、接口中没有用关键字public修饰的方法是友好方法
C、接口中的方法不能用关键字protected修饰
D、接口中可以定义非抽象方法
正确答案: C
3、下列关于异常类方法中,可用于获得异常信息的方法是 ( )。
A、getClass()
B、getMessage()
C、getCause()
D、Message()
正确答案: B
4、下列关于接口定义的描述中,错误的是( )。
A、接口中定义的方法会被隐式地指定为public abstract方法
B、接口中定义的变量会被隐式地指定为public static final变量
C、接口中可以定义非公共成员变量
D、接口中定义的方法只能是public abstract方法
正确答案: C
5、下面代码的运行结果为:( )
import java.io.*;
import java.util.*;
public class foo{
public static void main (String[] args){
String s;
System.out.println(“s=” + s);
}
}
A、由于String s没有初始化,代码不能编译通过
B、代码通过编译,并输出“s=null”
C、代码通过编译,并输出“s=”
D、代码得到编译,但捕获到 NullPointException异常
正确答案: A
6、下面关于Java接口的说法中,错误的是( )。
A、Java接口中可以声明私有成员
B、一个Java接口是一些方法特征的集合,但没有方法的实现
C、Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为
D、Java接口不能被实例化
正确答案: A
7、下列关于接口(或接口变量)的描述中,错误的是( )。
A、如果一个类实现了多个接口,这个类的对象就可以赋值给任意一个(它实现的)接口类型的变量
B、一个类继承于另一个类的同时,还可以实现多个接口
C、如果一个类实现了一个接口,它就不可以从其它类继承
D、接口中定义的变量会被隐式地指定为public static final变量
正确答案: C
8、为了捕获一个异常,代码必须放在下面( )语句块中。
A、finally块
B、try块
C、catch块
D、throws块
正确答案: B
9、下列关于抽象类和接口的描述中,正确的是( )。
A、一个类可以继承多个抽象类,但只能实现一个接口
B、抽象类可以实例化,接口不可以实例化
C、接口中可以包含静态方法
D、抽象类可以有构造方法,接口不能有构造方法
正确答案: D
10、下列关于抽象类和接口的说法中,错误的是( )。
A、接口中的方法都必须加上public关键字
B、抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承,但是一个类却可以实现多个接口
C、抽象类的子类必须实现其中的所有方法,除非它也是抽象类
D、接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值
正确答案: A
11、给定如下所示的Java代码,则运行时会产生的异常类型是( )。
char[] c = {‘z’,’j’,’n’,’u’,’x’,’z’};
System.out.println(c[c.length]);
A、IOException
B、NullPointerException
C、FileNotFoundException
D、ArrayIndexOutofBoundException
正确答案: D
12、下列关于关键字abstract的描述中,错误的是( )。
A、abstract可以修饰类和方法
B、abstract修饰的类,其子类也可以是abstract修饰的
C、abstract修饰的类主要用于被继承
D、abstract可以修饰变量
正确答案: D
- 下面关于接口和抽象类的描述中,错误的是( )。
- A、类可以实现很多个接口,但是只能继承一个抽象类
B、Java接口与抽象类都可以包含非final的变量
C、接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化
D、接口中所有的方法隐含的都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法
正确答案: B
14、下列关于内部类的描述中,错误的是( )。
A、内部类是定义在其它类(称为外部类)中的类
B、内部类可以访问外部类中的成员变量
C、内部类对象的创建不必依靠外部类对象
D、外部类中的成员变量类型可以是内部类
正确答案: C
二、论述题 (题数:1,共 16.0 分)
1、接口与抽象类的区别是什么?
正确答案
抽象类用class关键字声明,而接口用interface关键字声明;
接口中的抽象方法必须是public,而抽象类中的抽象方法可以是其它访问控制级别;
抽象类中除了抽象方法还可以非抽象方法、成员变量等,而接口中只能定义抽象方法和常量;
扩展抽象类用extends关键字,实现接口用implements关键字;
一个类只能从一个抽象类中继续,而一个类可以实现多个接口。