java程序设计试题库_第1页
java程序设计试题库_第2页
java程序设计试题库_第3页
java程序设计试题库_第4页
java程序设计试题库_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Java语言程序设计基础教程》

练习思索题参考答案

第1章Java程序设计概述

1.1单项选择题

1.编译JavaApplication源文件将产生相应的字节码文件,扩展名是什

A..javaB..class

C..htmlD..exe

解答:B

2.Java语言具有许多优点和特点,下列选项中,哪个反映了Java中“一

次编译,随处运行”的特点。

A.简洁性B.平台无关性

C.面对对象性D.平安性

解答:B

3.Java语言具有许多优点和特点,下列选项中,哪个反映了Java中并

行机制的特点。

A.多线程B.平台无关性

C.面对对象性D.平安性

解答:A

4.在Java语言中,下列哪些语句关于内存回收的说明是正确的?

A.程序员必需创建一个线程来释放内存;

B.内存回收程序负责释放无用内存;

C.内存回收程序允许程序员干脆释放内存;

D.内存回收程序可以在指定的时间释放内存对象

解答:B

5.一个Java源文件中最多只能有多少个public类。

A.1个B.2个

C.3个D.随意多个

解答:A

6.下面哪一个不是Java语言所具有的特点。

A.没有全局变量,在类的定义外部没有任何的变量定义;

B.不干脆支持指针操作,而运用更平安的引用类型;

C.支持子类对父类的多继承;

D.具有自动垃圾收集功能;

解答:C

7.下面哪一个不是Java开发工具包JDK的组成部分。

A.Java的编译器;

B.Java的说明器;

C.Java的API继承类库;

D.Eclipse开发工具;

解答:C

8.JDK供应的编译器是()o

A.java.exeB.javac.exe

C.javap.exeD.javaw.exe

解答:B

9.作为Java应用程序入口的main方法,其声明格式可以是()

A.publicvoidmain(String[]args)

B.publicstaticvoidmain(String[]args)

C.publicstaticvoidMain(String*args)

D.publicintmain(String[]args)

解答:B

10.下列说法正确的是(A)

A、JAVA程序的main方法必需写在类里面

B、JAVA程序中可以有多个main方法

C、JAVA程序中类名必需与文件名一样

D、JAVA程序的main方法中假如只有一条语句,可以不用{}(大括号)

括起来

11.下列哪些语句关于Java内存回收的说明是正确的?(B)

A、程序员必需创建一个线程来释放内存

B、内存回收程序负责释放无用内存

C、内存回收程序允许程序员干脆释放内存

D、内存回收程序可以在指定的时间释放内存对象

1.2填空题

1、开发与运行Java程序须要经过的三个主要步骤为、

和O

解答:编辑源程序、编译生成字节码和说明运行字节码

2、运用Java编译器—javac—.exe编译源文件得到字节码文件。

3、Java应用程序必需通过Java说明器_JAVA_.exe来说明执行

其字节码文件。

4、假如Java源文件中有一个类是public类,那么源文件的名字必

需与这个类的名字完全.相同,扩展名是.javao

5、Java应用程序总是从主类的—main—方法起先执行.

1.3简答题

13.简述Java程序的开发过程?

(1)运用一个文字编辑器,编写源文件。(2)运用java编译器,编

译源文件得到字节码文件。

(3)说明运行字节码,分两种java应用程序必需通过java说明器来说

明执行,java小应用程序必需运用说明器和阅读器运行程序。

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语

言”?

解答:

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文

件被编译成能被Java虚拟机执行的字节码文件。

Java被设计成允许应用程序可以运行在随意的平台,而不须要程序员

为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,

因为它知道底层硬件平台的指令长度和其他特性。

3.Java语言的关键特点有哪些?

解答:

简洁性

平台无关性

面对对象性

平安性

分布式

多线程

动态性

1.4综合题

第2章Java基本的程序设计结构

2.1单项选择题

1、下面哪一项在java中是非法的标识符?()

A.$user

B.point

C.You&me

D.endline

解答:C

2、若有定义inta=9,b=6;那么a>b的值是:()

A.0B.1

C.falseD.true

解答:D

3、执行完以下代码int口x=newint[25];后,以下说明正确的是:

)

A.x[24]为0B.x[24床定义

C.x[25]为0D.x[0]为空

解答:A

4、Java应用程序的main方法中有以下语句,则输出的结果是

)o

int[]X={2,3,-8,7,9};

intmax=x[O];

for(inti=1;i<x.length;i++){

if(x[i]>max)

max=x[i];

System,out.println(max);

A.2B.-8

C.7D.9

解答:D

5、设x=1,y=2,z=3,则表达式y+=z----/++x的值是

)

A.3B.3.5

C.4D.5

解答:A

5、执行System.out.printing/4),这条代码的输出结果是()

A.1B.1.25

C.1.5D.0

解答:A

6、下列语句有错误的是:()

A.int[]a;B.int[]b=newint[10];

C.intc[]=newint[];D.intd[]=null;

解答:C

7、下列语句有错误的是:()

A.inta[][]=newint[5][5];B.int[][]b=newint[5][5];

C.int[]c[]=newint[5][5];D.int[][]d=newint[5,5];

解答:D

8、下列哪一个不属于Java中的8种基本数据类型()

A.double;B.char;

C.int;D.String;

解答:D

9、以下数据类型存储空间最大的是()o

(A)byte(B)long(C)float(D)char

解答:B

10^System.out.println("5"+2);的输出结果应当是()。

A52B7

C2D5

答案:A

11.在类的定义中可以有两个同名方法,每个方法的参数不同,这种

现象称为方法(D)o

(A)封装(B)继承(C)覆盖(D)重载

12.java中定义字符串Strings="pzhu",下面操作可以取得字符

串长度的是()o

A.s.lengthQB.s.lengthC.s.sizeQD.

length(s)

解答:A

13.指出下列程序运行的结果(B)(很难)

publicclassExample{

Stringstr=newStringC'good");

char[]ch={'a','b','c');

publicstaticvoidmain(Stringargs[]){

Exampleex=newExampleQ;

ex.change(ex.str,ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

publicvoidchange(Stringstr,charch[]){

str="testok";

ch[O]='g';

A、goodandabc

B、goodandgbc

C、testokandabc

D、testokandgbc

14.下面代码的运行结果为:(C)(较难)

importjava.io.*;

importjava.util.*;

publicclassfoo{

publicstaticvoidmain(String[]args){

Strings;

System.out.printin("s="+s);

A代码得到编译,并输出“s=”

B代码得到编译,并输出<<s=nuir,

C由于Strings没有初始化,代码不能编译通过

D代码得到编译,但捕获到NullPointException

15.关于以下程序段,正确的说法是(C)

1.Stringsl="abc"+"def";

2.Strings2=newString(si);

3.if(sl==s2)

4.System.out.println("==succeeded");

5.if(sl.equals(s2))

6.System.out.println(M.equals()succeeded");

A、行4与行6都将执行

B、行4执行,行6不执行

C、行6执行,行4不执行

D、行4、行6都不执行

16.Javaapplication中的主类需包含main方法,main方法的返

回类型是什么?(D)A、intB、float

C、doubleD、void

17.为一个boolean类型变量赋值时,可以运用(B)方式

A、boolean=1;

B、booleana=(9>=10);

C^booleana="真";

D、booleana==false;

18.表达式(ll+3*8)/4%3的值是(D)

A、31B、0C、ID、2

19.运算符优先级别排序正确的是(A)(太难)

A、由高向低分别是:()、!、算术运算符、关系运算符、逻辑运算符、

赋值运算符;

B、由高向低分别是:()、关系运算符、算术运算符、赋值运算符、!、

逻辑运算符;

C、由高向低分别是:()、算术运算符、逻辑运算符、关系运算符、!、

赋值运算符;

D、由高向低分别是:()、!、关系运算符、赋值运算符、算术运算符、

逻辑运算符;

20.下列值不为true的表达式有(C)。

A、"john"=="john

B、"john".equals("john")

C、"john"="john"

D、"john".equals(newString("john"))

21、下面的方法,当输入为2的时候返回值是多少?(D)(很难)

publicstaticintgetValue(inti){

intresult=0;

switch(i){

case1:

result=result+i;

case2:

result=result+i*2;

case3:

result=result+i*3;

I

returnresult;

AOB2C4

DIO

答案:D

解析:留意这里case后面没有加break,所以从case2起先始终往

下运行。

22、下面有关for循环的描述正确的是(A)

A、for循环体语句中,可以包含多条语句,但要用大括号括起来

B、for循环只能用于循环次数已经确定的状况

C、在for循环中,不能运用break语句跳出循环

D、for循环是先执行循环体语句,后进行条件推断

23、score是一个整数数组,有五个元素,已经正确初始化并赋值,

细致阅读下面代码,程序运行结果是(B)

temp=score[0];

for(intindex=1;index<5;index++){

if(score[index]<temp){

temp=score[index];

|

}

A.求最大数B.求最小数C.找到数组最终一个元素D.编译出

26、

2.2填空题

1、Java语言是一种完全的.面对对象_程序设计语言

2、Strings1="China”;intn=sl.length();n的值为_5—

3、在Java语言中,基本数据类型包括:—整数类型、—浮点类

型、__字符类型一和一布尔类型

17、在Java的基本数据类型中,char型接受Unicode编码方案,

每个Unicode码占用_2—字节内存空间,这样,无论是中文字符还是

英文字符,都是占用_2—字节内存空间。

18、设x=2,则表达式(x++)/3的值是_0—。

20、设有数组定义:

intMyIntArray[]={10,20,30,40,50,60,70);

则执行以下几个语句后的输出结果是:120o

intMyIntArray[]={10,20,30,40,50,60,70};

ints=0;

for(inti=0;i<MylntArray.length;i++)

if(i%2==1)

s+=MylntArray[i];

System.out.println(s);

21、数组对象的长度在数组对象创建之后,就—不会—变更。数组

元素的下标总是从一。一起先。

22、对于数组由用母={{1,2,3},{4,5,6}}来说,t.length等于_2—,

t[0].length等于_3o

2.3简答题

1、Java的基本数据类型有哪8种,每种类型的内存空间分别是多少。

2.4综合题

26、编程计算1。~2。的整数的平方值,将结果保存在一个数组中。

27、编写一个程序使之从键盘读入10个整数存入整型数组a中,并

输出这10个整数的最大值和最小值。

importjava.util.Scanner;

publicclasslianxi30(

publicstaticvoidmain(Stringargs[]){

Scannertemp;

float[]sum=newfloat[11];

floatmax,min;

for(inti=0;i<10;i++){

System.outprintln("请输入第一个数字(回车结束):");

temp=newScanner(System.zn);

Stringa=temp.nextLineQ;

sum[i]=Integer.parse/nda);//获得输入的字符串

}

max=sum[0];

min=sum[0];

for(intj=1;j<10;j++)

{

if(max<sum[j])

max=sum[j];

elseif(min>sum[j])

min=sum[j];

System.OLzAprintln(max);

System.OLZ^.println(min);

}

}

31、假如我国经济以每年10%的速度保持稳定增长,请编写一个程序,

计算每年达到多少,多少年可以实现总量翻两番。

classexA4_l{

publicstaticvoidmain(Stringargs[]){

inta=0;

doublei=0.10,sum=l;

while(sum<=4){

sum=(i+l)*sum;

a++;

System.out.println("第"+a+"年达到"+sum);

System.out.printing须要"+a+"年实现两番");

第3章类和对象

3.1单项选择题

1、下列关于变量的叙述哪个是错的?()

A.实例变量是类的成员变量。

B.在方法中定义的局部变量在该方法被执行时创建。

C.实例变量用关键字static声明。

D.局部变量在运用前必需被初始化。

解答:C

2、在Java语言中,下列哪个包是编译器自动导入的?()

A.java.appletB.java.lang

C.java.ioD.java.awt

解答:B

6、不允许作为类与类成员的访问限制符的是()o

A.publicB.private

C.staticD.protected

解答:C

7、为AB类的一个无形式参数无返回值的方法method书写方法头,

使得运用类名AB作为前缀就可以调用它,该方法头的形式为()o

A、staticvoidmethod()B、publicvoid

method()

C、finalvoidmethod()D、abstractvoid

method()

解答:A

8、可以在下面代码段pointx处写入的是?()

//pointx

publicclassInteresting(

//dosomething

}

A.Stringstr;

B.staticintPI=3.14;

C.publicclassMyClass{//dootherthing-

D.importjava.awt.*;

解答:D

9、Java供应的许多类在不同的包中,运用下面哪个语句可以引入包

中的类。

A.packageB.include

C.importD.add

解答:C

11、已知A类被打包在packageA,B类被打包在packageB,且B

类被声明为public,且有一个成员变量x被声明为protected限制方式。

C类也位于packageA包,且继承了B类。则以下说法正确的是:()

A、A类的实例不能访问到B类的实例

B、A类的实例能够访问到B类一个实例的x成员

C、C类的实例可以访问到B类一个实例的x成员

D、C类的实例不能访问到B类的实例

解答:C(太难)

13、在Java中,关于final关键字的说法正确的是()

A、假如修饰变量,则一旦赋了值,就等同一个常量。

B、假如修饰类,则该类只能被一个子类继承。

C、假如修饰方法,则该方法不能在子类中被覆盖。

D、假如修饰方法,则该方法所在的类不能被继承。

解答:A,C

14、关于构造方法以下说法错误的是(D)o

(A)构造方法名必需与类名一样(B)构造方法可以重载

(C)构造方法是通过new来调用(D)每个类都必需编写构

造方法代码

15、关于类的定义以下说法错误(B)。

(A)类定义运用class关键字(B)每个类中必需有一个main

方法

(C)一个包可以包含多个类(D)java中全部类都是Object类

的子类

16、在创建对象时必需(C)

A)先声明对象,然后才能运用对象

B)先声明对象,为对象支配内存空间,然后才能运用对象

C)先声明对象,为对象支配内存空间,对对象初始化,然后才能

运用对象

D)上述说法都对

17、在调用方法时,若要使方法变更实参的值,可以(B)

A)用基本数据类型作为参数B)用对象作为参数

C)A和B都对D)A和B都不对

18、关于以下程序代码的说明正确的是(D)

classHasStatic{

privatestaticintx=100;

publicstaticvoidmain(Stringargs[]){

HasStatichsl=newHasStatic();

hsl.x++;

HasStatichs2=newHasStatic();

hs2.x++;

hs1=newHasStatic();

hsl.x++;

HasStatic.x-

System.out.printin("x="+x);

}

}

A、5行不能通过编译,因为引用了私有静态变量

B、10行不能通过编译,因为x是私有静态变量

C、程序通过编译,输出结果为:x=103

D、程序通过编译,输出结果为:x=102

19、以下关于构造函数的描述错误的是(A)。

A、构造函数的返回类型只能是void型。

B、构造函数是类的一种特殊函数,它的方法名必需与类名相同。

C、构造函数的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造函数。

20、Java中,在如下所示的Test类中,共有(C)个构造方法。

publicclassTest{

privateintx;

publicTest(){x=35;}

publicvoidTest(doublef){This.x=(int)f;}

publicTest(Strings){}

I

A、OB、IC、2D、3

21、在Java中,关于构造方法,下列说法错误的是(C)

A、构造方法的名称必需与类名相同

B、构造方法可以带参数

C、构造方法不行以重载

D、构造方法确定不能有返回值

22、在Java语言中,下列关于类的继承的描述,正确的是(B)。

A、一个类可以继承多个父类

B、一个类可以具有多个子类

C、子类可以运用父类的全部方法

D、子类确定比父类有更多的成员方法

23、分析选项中关于Java中this关键字的说法正确的是(A)

A、this关键字是在对象内部指代自身的引用

B、this关键字可以在类中的任何位置运用

C、this关键字和类关联,而不是和特定的对象关联

D、同一个类的不同对象共用一个this

24、在Java接口中,下列选项中有效的方法声明是(A)。

A、publicvoidaMethodQ;

B、publicfinalvoidaMethodQ;

C^protectedvoidaMethodQ;

D、privatevoidaMethod();

25、下列选项中关于Java中super关键字的说法正确的是(A)。

A、super关键字是在子类对象内部指代其父类对象的引用

B、super关键字不仅可以指代子类的干脆父类,还可以指代父类的

父类

C、子类通过super关键字只能调用父类的方法,而不能调用父类的

属性

D、子类通过super关键字只能调用父类的属性,而不能调用父类的

方法

3.2填空题

1、在Java程序中,通过类的定义只能实现—单重继承—,但通

过接口的定义可以实现多—多重继承—。

2、_抽象(abstract)—方法是一种仅有方法头,没有具体方法体和

操作实现的方法,该方法必需在抽象类之中定义。—final方法是不能

被当前类的子类重新定义的方法。

3、面对对象程序设计的三个特征是____封装、多态、继承

4、Java是面对对象语言,类是客观事物的.抽象,而对象是类的

.实例一o

5、假如在子类中想运用被子类隐藏的父类成员变量或方法,就可以运

用关键字一supero

6、Java中有一种叫作—构造方法一的特殊方法用来对类的对象成员

进行初始化。

7、JAVA语言中供应了两种类型的字符串类来处理字符串,它们是

___$在111£和___StringBuffer类

8、Java语言中,全部的类都是—Object的子类,Java的窗口通

常是—JFrame__的子类,—抽象一类只能定义但不能被实例化,.最终

一类不能被继承

9、一般Java程序的类体由两部分组成:一部分是一属性_,另一部分

是一方法一

1。、分别用—class_关键字来定义类,用_new__关键字来支配实例存

储空间。

11、Java中类成员的限定词有以下几种:_private_public__,

protected____,_缺省__。其中,.public一的限定的范围最大。类中

限定为—private—的成员,只能被这个类本身内部访问。

12、Java类中,假如类的定义者没有显式的定义任何构造方法,系

统将自动供应一个一无参默认.构造方法。

13、在子类中定义与父类的相同的方法,若在多个子类中定义相同的方

法,则可以调用不同子类中的相同方法而实现不同的功能,这实现了程序运

行时的多态。

3.3简答题

1.简洁阐述方法的重载和方法的重写之间的区分

解答:

重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,

但是参数却不相同

2、简述实例变量和类变量的区分。

解答:类变量也叫静态变量,也就是在变量前加了static的变量;实

例变量也叫对象变量,即没加static的变量;

区分在于:类变量是全部对象共有,其中一个对象将它值变更,其他

对象得到的就是变更后的结果;而实例变量则属对象私有,某一个对象将

其值变更,不影响其他对象;

2、简述实例方法和类方法的区分

解答:实例方法可以对当前对象的实例变量进行操作,也可以对类变

量进行操作,实例方法由实例对象调用。但类方法不能访问实例变量,只

能访问类变量。类方法可以由类名干脆调用,也可由实例对象进行调用。

类方法中不能运用this或super关键字。

3、面对对象的三个基本特征是什么,分别简洁介绍每个特征。

解答:三大特性是:封装,继承,多态。

封装性就是把对象的属性和服务结合成一个独立的单位,并尽可能隐

藏对象的内部微小环节。

特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类

的继承。

对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,

可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务

在一般类与其各个特殊类中具有不同的语义。

4、简洁阐述成员变量和局部变量的区分。

解答:

1)成员变量在整个类内都有效,局部变量只在定义它的方法内有效。

2)成员变量又分为实例成员变量(简称实例变量)和类变量(也称静

态变量),假如成员变量的类型前面加上关键字static,这样的成员变量

称为类变量或静态变量。

3)假如局部变量的名字与成员变量的名字相同,则成员变量被隐藏,

也就是说,这个成员变量在这个方法内短暂失效。这时假如想在该方法内

运用成员变量,必需运用关键字this。

5、简述对象的引用和实体。

解答:当用类创建一个对象时,类中的成员变量被支配内存空间,这

些内存空间称为该对象的实体,而对象中存放着引用,以确保实体由该对

象操作运用。没有实体的对象称为空对象,空对象不能运用,即不能让一

个空对象去调用方法产生行为。

6、简述this关键字的意义,以与它在成员方法和构造方法中如何运

用。

解答:this是Java的一个关键字,表示某个对象。this可以出现在

实例方法和构造方法中,但不行以出现在类方法中。this可以出现在实例

方法和构造方法中,但不行以出现在类方法中。this关键字出现在类的构

造方法中时,代表运用该构造方法所创建的对象。实例方法必需通过对象

来调用,当this关键字出现在类的实例方法中时,代表正在调用该方法

的当前对象。

成员函数中定义了和成员变量中相同的变量时,引用成员变量要用

this;构造函数中调用同一个类的其他构造函数时用thiSo

7、简洁描述Java的参数传值中的两种方式,基本数据类型参数的传

值和引用类型参数的传值?

解答:在基本数据类型参数的传值中,基本数据类型的参数向该参数

传递的值的级别不行以高于该参数的级别。

在引用类型参数的传值中,Java的引用类型数据包括对象、数组和接

口,当参数是引用类型时,“传值''传递的是变量的引用而不是变量所引

用的实体。假如变更参数变量所引用的实体,就会导致原变量的实体发生

同样的变更,但是假如变更参数的引用不会影响向其传值的变量的引用。

8、基本数据类型和对象作为参数传递的不同?

解答:

(1)基本数据类型作为参数在方法中传递的是值传递。

(2)对象是引用传递,当对象作为参数传递时,传递的是对象的地

址。

3.4综合题

1、定义一个“点”(Point)类用来表示三维空间中的点,类体的成员

变量x,y,z分别表示三维空间的坐标。类体中具有如下成员方法的定义:

1)构造方法Point。可以生成具有特定坐标的点对象。

2)setX(),setY(),setZ()为可以设置三个坐标的方法。

3.)getDistance。为可以计算该点距离原点距离平方的方法。

解答:

classPoint{

doublex,y,z;

Point(double_x,double_y,double_z)

I

X=_x;

y=q;

z=_z;

)

voidsetX(double_x){

x=_x;

}

voidsetY(double_y){

y=_y;

)

voidsetZ(double_z){

z=_z;

doublegetDistance(){

return(x*x+y*y+z*z);

}

2、编写一个Java应用程序Test类,实现成员方法max(a,b)的重载。

具体要求如下:

a)编写voidmax(inta,intb)成员方法,对两个整数进行大小的比较,

输出打印较大的那个整数。

b)编写voidmax(floata,floatb)成员方法,对两个float数进行大小的

比较,输出打印较大的那个float数。

c)编写voidmax(doublea,doubleb)成员方法,对两个double数进

行大小的比较,输出打印较大的那个double数。

publicclassTest{

voidmax(inta,intb){

System.out.println(a>b?a:b);

}

voidmax(floata,floatb){

System,out.printin(a>b?a:b);

voidmax(doublea,doubleb){

System.out.printin(a>b?a:b);

}

publicstaticvoidmain(String[]args){

Testt=newTest();

t.max(3,4);

}

}

3、编写一个矩形类对数学中的矩形进行抽象描述,并具有方法可以计算

矩形的周长和面积,具体分为以下三个子任务完成。

(1)创建Rectangle类,添加属性width、height,并定义构造方法

Rectangle(double_width,double_height);

(2)在Rectangle类中添加两种方法computCircum()和computAreaQ

分别计算矩形的周长和面积;

(3)编程利用Rectangle对象输出一个30*40的矩形的周长和面积。

解答:

publicclassTestRectang{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Rectanglerecti=newRectangle(20,30);

System.oiztprintln(rect1putAreaQ);

System.outprintln(rect1putCircumQ);

}

}

classRectangle{

doublewidth,height;

Rectangle(){

width=0;

height=0;

}

Rectangle(double_width,double_height){

width=_width;

height=_height;

doublecomputAreaQ{

returnwidth*height;

}

doublecomputCircum(){

return2*(width+height);

第4章继承、接口和内部类

4.1单项选择题

1、Java中用于定义接口的关键字是()

A、importB、package

C、classD、interface

解答:D

2、以下关于abstract的说法,正确的是()

A、abstract只能修饰类

B、abstract只能修饰方法

C、abstract类中必需有abstract方法

D、abstarct方法所在的类必需用abstract修饰

解答:D

3、下列哪种说法是正确的()

A、私有方法不能被子类覆盖。

B、子类可以覆盖超类中的任何方法。

C、覆盖方法可以声明自己抛出的异样多于那个被覆盖的方法。

D、覆盖方法中的参数清单必需是被覆盖方法参数清单的子集。

解答:A

4、关于类继承的说法,正确的是()

A、Java类允许多重继承

B、Java接口允许多继承

C、接口和类都允许多继承

D、接口和类都不允许多继承

解答:B

5、关于抽象类,正确的是_____o

A.抽象类中不行以有非抽象方法

B.某个非抽象类的父类是抽象类,则这个子类必需重载父类的全

部抽象方法

C.可以用抽象类干脆去创建对象

D.接口和抽象类是同一个概念

解答:B

8、抽象类A和抽象类B的定义如下:

abstractclassA{

abstractintgetinfo();

}

publicclassBextendsA{

privateinta=0;

publicintgetinfo(){

returna;

}

publicstaticvoidmain(Stringargs[]){

Bb=newB();

System.out.printin(b.getinfo());

)

)

关于上述代码说明正确的是()o

A.输出结果为0B.通过编译但没有输出任何结果

C.第5行不能通过编译D.程序第2行不能通过编译

解答:A

9、下面程序的运行结果是______

classex4_5_l1_A{

protectedstaticintcount=0;

publicex4_5_l1_A(){

count++;

I

f

I

J

classex4_5_l1_Bextendsex4_5_l1_A{

publicex4_5_l1_B(){

count++;

}

f

classex4_5_l1{

publicstaticvoidmain(Stringargs[]){

ex4_5_l1_Bx=newex4_5_l1_B();

System.out.println("count="+x.count);

A.count=1B.count=2

C.count=3D.count=4

解答:B

1。、设有下面两个类的定义:

classPerson

{longid;//身份证号

Stringname;//姓名

}

classStudentextendsPerson

{intscore;//入学总分

intgetScore(){

returnscore;

|

}

问:类Person和类Student的关系是()

A、包含关系B、继承关系

C、关联关系D、无关系,上述类定义有语法错误

解答:B

11、以下程序代码错误的是(B)。

abstractclassP{}

classAextendsP{}

abstractclassBextendsP{}

(A)Pp=newA();(B)Pp=newB();

(C)Aa=newA();(D)Pp=newP(){voidfoo(){1};

12、下面是People和Child类的定义和构造方法,每个构造方法都

输出编号。在执行newChild("mike")的时候都有哪些构造方法被依次调

用?请选择输出结果(D)

classPeople{

Stringname;

publicPeople(){

System.out.print(l);

}

publicPeople(Stringname){

System.out.print(2);

this,name=name;

classChildextendsPeople{

Peoplefather;

publicChild(Stringname){

System.out.print(3);

this,name=name;

father=newPeople(name+":F");

}

publicChild(){

System.out.print(4);

A312B32C432D

132

13、选项中哪一行代码可以替换题目中//addcodehere而不产生编

译错误?(A)

publicabstractclassMyClass{

publicintconstlnt=5;

//addcodehere

publicvoidmethodQ{

}

}

Apublicabstractvoidmethod(inta);

Bconstlnt=constlnt+5;

Cpublicintmethod();

DpublicabstractvoidanotherMethod(){}

15、以下哪项是接口的正确定义?(D)

A、interfaceB{voidprint(){}}

B、abstractinterfaceB{voidprint()}

C、abstractinterfaceBextendsA1,A2〃A1、A2为已

定义的接口

{abstractvoidprint(){};}

D、interfaceB{voidprint();}

16、A派生出子类B,B派生出子类C,并且在Java源代码中有如

下声明:

1.AaO=newA();

2.Aal=newB();

3.Aa2=newC();

问以下哪个说法是正确的?(D)

A、只有第1行能通过编译

B、第1、2行能通过编译,但第3行编译出错

C、第1、2、3行能通过编译,但第2、3行运行时出错

D、第1行、第2行和第3行的声明都是正确的

17、假设A类有如下定义,设a是A类的一个实例,下列语句调用哪

个是错误的?(C)

classA

{inti;

staticStrings;

voidmethod1(){}

staticvoidmethod2(){}

/I

A^System.out.println(a.i);B>a.methodl();

C、A.method1();D、A.method2()

18、以下关于继承的叙述正确的是(A)。

A、在Java中类只允许单一继承

B、在Java中一个类只能实现一个接口

C、在Java中一个类不能同时继承一个类和实现一个接口

D、在Java中接口只允许单一继承

19、以下关于抽象类和接口的说法错误的是(E)

A、抽象类在Java语言中表示的是一种继承关系,一个类只能运用

一次继承。但是一个类却可以实现多个接口。

B、在抽象类中可以没有抽象方法

C、实现抽象类和接口的类必需实现其中的全部方法,除非它也是抽

象类。接口中的方法都不能被实现

D、接口中定义的变量默认是publicstaticfinal型,且必需给其初

值,所以实现类中不能重新定义,也不能变更其值。

E、接口中的方法都必需加上public关键字。

4.2填空题

1、在Java语言中全部的类都是干脆或间接地继承.Object

类而得到的。

2、在Java中一个父类可以有—多一个子类,一个类只能有一——

个干脆父类。

3、Java中不能被实例化、只能被子类继承的是—抽象类

4、当子类中的变量或方法与父类的变量和方法重名时,子类的变量被

隐藏,子类中的方法被重载。此时,指向父类中的变量或方

法,则用super关键字实现。

5、用来定义一个类指定继承父类的关键字是______extends,用来指

定接口的继承的关键字是______implements

7、在已有类的基础上构造一个新的类,称为类的继承。

4.3简答题

1、请举例简要说明JAVA语言的继承机制有何特点?

解答:子类可以运用父类中的成员变量和方法,然后也可以添加自己

的属性和方法。假如子类没有构造方法,则编译器首先为子类添加一个无

参的构造方法,然后调用父类的默认构造方法,假如子类有构造方法,则

先调用父类的默认构造方法,再调用子类的构造方法;假如父类中没有默

认构造方法,则出错。(太难)

2、什么是继承?什么是多重继承和单继承?Java接受何种机制来实

现多重继承?

解答:继承是面对对象编程的一种特性,是保留原有类功能的前提下

拓展或改写部分功能,实现代码复用的方式。单继承就是一个类只可以继

承自一个父类,多继承是指一个类可以同时继承多个父类。java中运用的

是单继承,也就是一个类有且只能有一个父类,java中可以运用接口实现

来实现类似多继承的效果。

3、简述super关键字的意义,以与如何运用。

解答:关键字super表示父类对象。通过在子类中运用super做前缀

可以引用被子类隐藏的父类变量或被子类重写的父类方法。super用来引

用当前对象的父类,虽然构造方法不能够继承,但利用super关键字,子

类构造方法中也可以调用父类的构造方法。1)操作被隐藏的变量和方法⑵

运用super调用父类的构造方法。

4、抽象类是什么,抽象方法是什么。

解答:抽象类就是不能运用new方法进行实例化的类,即没有具体实

例对象的类。抽象类有点类似“模板”的作用,目的是依据其格式来创建

和修改新的类。对象不能由抽象类干脆创建,只可以通过抽象类派生出新

的子类,再由其子类来创建对象。

抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类

型、方法名称和所需的参数,没有方法体,也就是说抽象方法只须要声明

而不须要实现。当一个方法为抽象方法时,意味着这个方法必需被子类的

方法所重写,否则其子类的方法照旧是abstract的。

4、接口是什么,以与它的用处体现在哪几个方面。

解答:接口是抽象类的一种,只包含常量和方法的定义,而没有变量

和方法的实现,且其方法都是抽象方法。它的用处体现在下面几个方面:

1)通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系。2)

通过接口指明多个类须要实现的方法。3)通过接口了解对象的交互界面,

而无需了解对象所对应的类。

5、什么是接口,什么是抽象类,接口和抽象类的区分?

解答:

抽象类就是不能运用new方法进行实例化的类,即没有具体实例对象

的类。抽象类有点类似“模板”的作用,目的是依据其格式来创建和修改

新的类。对象不能由抽象类干脆创建,只可以通过抽象类派生出新的子类,

再由其子类来创建对象。

接口是抽象类的一种特殊形式,只包含常量和方法的定义,而没有变

量和方法的实现,且其方法都是抽象方法。

抽象层次不同,抽象类是对类的抽象,而接口是对行为的抽象。

跨域层次不同,抽象类的跨域是具有相像的类,接口可以跨域不同的

类。

设计层次不同,抽象类是自底向上抽象而来,子类抽象父类接口是自

顶向下设计的,无需知道子类。

6、接口的用处体现哪几个方面?

解答:

通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系。

通过接口指明多个类须要实现的方法。

通过接口了解对象的交互界面,而无需了解对象所对应的类。

7、接口与实现类(具体类)关系:

解答:

多个无关的类可以实现同一个接口。

一个类可以实现多个无关的接口。

与继承关系类似,接口与实现类之间存在多态性。

14、子类与父类的继承关系中,什么是属性隐藏?什么是方法重写?

解答:隐藏是指当父类和子类有相同名字的属性的时候,父类的同名

变量形式上不行见了。但是实际还是存在的。

重写是针对方法的,通常是父类的方法在子类中重新写过。当执行子

类的实例得时候,实际运行的是子类的方法。在子类里面可以通过

super.method()来显式的访问。

15、子类会继承父类的全部方法和属性么?

解答:在同一个包中除private声明外的方法都可以继承。不在同一

个包中,只继承protected和public声明的方法。(太难了)

16、Java中的方法重写(Overriding)和方法重载(Overloading)分别

是什么?

解答:Java中的方法重载发生在同一个类里面两个或者是多个方法的

方法名相同但是参数不同的状况。与此相对,方法重写是说子类重新定义

了父类的方法。子类中重写的方法和父类中被重写的方法必需有相同的方

法名,参数列表和返回类型,只是方法体不同。

4.4综合题

1、写出一个类People,并由该类做基类派生出子类Employee和

Teachero其中People类具有name、age两个爱惜成员变量,分别为

String类型、整型,且具有公有的getAge成员函数,用于返回age变量

的值。Employee类具有爱惜成员变量empno为String类型,Teacher

类有teano为String类型和zc成员变量为String类型。

解答:

//People类:

publicabstractclassPeople(

protectedStringname;

protectedintage;

publicintgetAge(){

returnage;

}

}

//Employee类:

publicclassEmployeeextendsPeople{

protectedStringempno;

}

“Teacher类:

publicclassTeacherextendsPeople{

protectedStringteano;

protectedStringzc;

2、定义一个新的类Student类,继承Person类。要求:

1)增加“school”属性为String类型。

2)重载Student类的构造方法,Student(Stringn,String1,String

school)o

3)重写Person类的info。方法,增加school信息。

classPerson{

privateStringname;

privateStringlocation;

Person(Stringname,Stringlocation){

=name;

this.location=location;

}

publicStringinfo(){

return"name:"+name+"location:"+location;

解答:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论