《Java基础入门》课后习题及答案_第1页
《Java基础入门》课后习题及答案_第2页
《Java基础入门》课后习题及答案_第3页
《Java基础入门》课后习题及答案_第4页
《Java基础入门》课后习题及答案_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

《Java基础入门》课后习题及答

博学谷一一让IT教学更简单,让IT学习更有效

«Java基础入门》课后习题

第1章Java开发入门

一、填空题

1、Java的三大体系分别是_JavaSE

JavaEE.JavaMEo

2、Java程序的运行环境简称之为JRE

3、编译Java程序需要使用」avac命令。

4、javac.exe和java.exe两个可执行程序存放在JDK

录的bin目录下。

5、path环境变量用来存储Java的编译和运

行工具所在的路径,而.classpath环境变量

则用来保存保存Java虚拟机要运行的”.class”

文件路径。

二、选择题

博学谷一一让IT教学更简单,让IT学习更有效

1、以下选项中,哪些属于JDK工具?(多选)ABCD

A、Java编译器B、Java运行工具C、Java文

档生成工具D、Java打包工具

2、Java属于以下哪种语言?C

A、机器语言B、汇编语言C、高级语言

D、以上都不对

3、下面哪种类型的文件可以在Java虚拟机中运行?

D

A、.javaB、.jreC、.exe

D、.class

4、安装好JDK后,在其bin目录下有许多exe可执

行文件,其中java.exe命令的作用是以下哪一种?B

A、Java文档制作工具B、Java解释器C、

Java编译器D、Java启动器

5、如果jdk的安装路径为:d:\jdk,若想在命令

口中任何当前路径下,都可以直接使用javac和

java命令,需要将环境变量path设置为以下哪个

博学谷一一让IT教学更简单,让IT学习更有效

选项?B

A.d:\jdk;B.d:\jdk\bin;C.d:\jre\bin;

D.d:\jre;

三、问答题

1、简述Java的特点。

面向对象、跨平台性、健壮性、安全性、可

移植性、多线程性、动态性等。

2.简述JRE与JDK的区别。

JRE(JavaRuntimeEnvironmentfJava运行时

环境),它相当于操作系统部分,提供了Java程序运

行时所需要的基本条件和许多Java基础类,例如JO

类.GUI控件类.网络类等。JRE是提供给普通用户

使用的,如果你只想运行别人开发好的Java程序,那

么,你的计算机上必须且只需安装JRE。

JDK(JavaDevelopmentKitfJava开发工具包),它

博学谷一一让IT教学更简单,让IT学习更有效

包含编译工具、解释工具、文档制作工具、打包工具

多种与开发相关的工具,是提供给Java开发人员使用

的。初学者学习和使用Java语言时,首先必须下载和

安装JDKOJDK中已经包含了JRE部分,初学者安

装JDK后不必再去下载和安装JRE了。

JDK(JavaDevelopmentKit,Java开发工具

包),它包含编译工具、解释工具、文档制作工具、打包

工具多种与开发相关的工具,是提供给Java开发人员使

用的。初学者学习和使用Java语言时,首先必须下载和

安装JDKOJDK中已经包含了JRE部分,初学者安装

JDK后不必再去下载和安装JRE了。

使用记事本编写一个HelioWorld程序,在dos命令行

口编译运行。请按照题目的要求编写程序并给出运行

结果。

博学谷一一让IT教学更简单,让IT学习更有效

publicclassHelioWorld{

publicstaticvoidmain(String[]args){

System.out.printin("这是第一个Java程序!");

)

)

第2章Java编程基础

1.Java中的程序代码都必须在一个类中定义,类使

用—class—关键字来定义。

2.布尔常量即布尔类型的两个值,分别是」me

fll.flase

3.Java中的注释可分为三种类型,分别是一单行注释

〃—.—多行注释,**/_■文档/注释**VO

4、Java中的变量可分为两种数据类型,分别是一基本

数据类型和一引用数据类型

5.在Java中1byte类型数据占1一个字节1short

类型数据占—2—个字节,int类型数据占

博学谷一一让IT教学更简单,让IT学习更有效

—4—个字节,long类型数据占—8—个字

节。

6、在逻辑运算符中,运算符_和_用

于表示逻辑与,—和—表示逻辑或。

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

8、若inta=2;a+=3;执行后,变量a的值为一50

9、若int[]a={12,45,34,46,23};,则a[2]=_34—。

10、若inta[3][2]={{123,345},{34,56},{34,56}},则

a[2][l]=_56—。

二、判断题

1、Java语言不区分大小写。错

2、0xC5表示的是一个十六进制整数。对

3、continue语句只用于循环语句中,它的作用是跳

出循环。错

4、”/*…*/”中可以嵌套“〃”注释,但不能嵌套

博学谷一一让IT教学更简单,让IT学习更有效

注释。对

5、-5%3的运算结果是2。错

三、选择题

1、以下选项中,哪些属于合法的标识符?(多选)AD

A.Hello_WorldB.classC%123username

D.usernamel23

2、关于方法重载的描述,以下选项中哪些是正确的?

(多选)(AD)ABD

A、方法名必须一致B、返□

G参数个数必须一致D、参数的个数或类型

不一致

3、以下关于变量的说法错误的是?C

A、变量名必须是一个有效的标识符

B、变量在定义时可以没有初始值

博学谷一一让IT教学更简单,让IT学习更有效

C.变量一旦被定义,在程序中的任何位置都可

以被访问

D.在程序中,可以将一个byte类型的值赋给一

个int类型的变量,不需要特殊声明

4.以下选项中,switch语句判断条件可以接收的数据

类型有哪些?(多选)ABCD

A.intB.byteC.charD.short

5■假设intx=2,三元表达式x>0?x+l:5的运行结

果是以下哪一个?C

A.0B.2C.3D.5

6.下面的运算符中,用于执行除法运算是哪个?A

A./B.\C.%D.*

7、下列语句哪些属于循环语句?(多选)AC

A.for语句B.if语句C.while语句D.

switch语句

博学谷一一让IT教学更简单,让IT学习更有效

8、下面哪种写法可以实现访问数组arr的第1个元

素?A

A.arr[O]B.arr(O)C.arr[l]D.arr(l)

9、以下哪个选项可以正确创建一个长度为3的二维数

组?(B)C

A.newint[2][3];B.new

int[3][];

C、newint[][3];D、以上答

案皆不对

10、请先阅读下面的代码。

intx=1;

inty=2;

if(x%2==0){

y++;

}else{

y—;

)

System.out.printin(*'y="+y);

上面一段程序运行结束时,变量y的值为下列哪一

项?A

博学谷一一让IT教学更简单,让IT学习更有效

A.1B.2C.3D.switch语句

!1!、程序分析题

阅读下面的程序,分析代码是否能够编译通过,如

果能编译通过,请列出运行的结果。否则请说明编译失

败的原因。

代码一:b=7(编译不通过。int值4和b相加时,由

于变量b的类型为byte,取值范围没有int类型大,存

不下int类型的值,因此编译不通过)

publicclassTestOl{

publicstaticvoidmain(String[]args){

byteb=3;

b=b+4;

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

}

)

代码二:不能,y只在{}有效(编译不通过。这是

因为y是在最里层的代码块中定义的一个变量,只有在

那个代码)

publicclassTest02{

publicstaticvoidmain(String[]args){

intx=12;

博学谷一一让IT教学更简单,让IT学习更有效

inty=96;

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

System.out.printin("yis"+y);

}

y=x;

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

)

)

代码三:3因为没有break,,所以4以后都执行

publicclassTest03{

publicstaticvoidmain(Stringargs[]){

intx=4,j=0;

switch(x){

case1:

j++;

case2:

j++;

case3:

j++;

case4:

j++;

case5:

j++;

default:

j++;

)

System.out.printin(j);

}

)

代码四:

9

8

7

publicclassTest04{

publicstaticvoidmain(Stringargs[]){

intn=9;

while(n>6){

博学谷一一让IT教学更简单,让IT学习更有效

System.out.printin(n);

n--;

)

}

}

五、简答题

1、请列举Java语言中的八种基本数据类型,并说明

每种数据类型所占用的空间大小。

Java语言的八种基本数据类型有:byte字节型,占一

个字节。short短整型,占两个字节。int整型,占4个

字节。long长整型,占8个字节。float单精度浮点型,

占4个字节。double双精度浮点型,占8个字节。char

字符型,占两个字节。boolean型,表示逻辑值,有true

和false两个值,分别占一个字节。

2、简述&&与&的区别并举例说明。

如果使用在表达式之间进行连接,那么无论任何

情况,"&"两边的表达式都会参与计算。如果使用“&&"

博学谷一一让IT教学更简单,让IT学习更有效

进行连接,当“&&”左边的表达式为false,则不会执

行其右边的表达式。例如定义intx=2,y=0;booleanb=

x<y&x/2>0表达是会发生被0除异常,因为x/y的

表达式执行了。而booleanb=x<y&x/2>0是不会出

现这种异常的,因为X<y为false,表达式x/y不会执

3、什么是方法重载?

方法重载指的是在一个类中可以声明多个同名的方

法,而方法中参数的个数或者数据类型不一致。

调用这些同名的方法时,JVM会根据实际参数

的不同绑定到不同的方法。

六、编程题

请按照题目的要求编写程序并给出运行结果。

1、请编写程序,实现计算“1+3+5+7+...+99”的值。

博学谷一一让IT教学更简单,让IT学习更有效

提示:

1)使用循环语句实现自然数「99的遍历。

2)在遍历过程中,通过条件判断当前遍历的数是否

为奇数,如果是就累加,否则不加。

2.已知函数

rx+3(x>0)

Jy=0(x=0)

根据传入的值

x的

方?去接收一

2)哂if...elseif.elsei两x的值进

3)执行不同的表达式,并将结果

4

5方法,传入一个int

25^442,76401,96,28}的

提示:使用冒泡排序算法。

第3章面向对象(上)

一.填空题

博学谷一一让IT教学更简单,让IT学习更有效

1、面向对象的三大特征是封装性_、_继承性

和—多态性—O

2、在Java中,可以使用关键字_new—来创建

类的实例对象。

3、定义在类中的变量被称为—成员变量_____定

义在方法中的变量被称为局部变量______

4、面向对象程序设计的重点是_类—_的设计,—

类—是用来创建对象的模板。

5、在非静态成员方法中,可以使用关键字」his_

访问类的其它非静态成员。

6、当一个对象被当成垃圾从内存中释放时,它的

—finalized方法会被自动调用。

7.被static关键字修饰的成员变量被称为一静态变

量一,它可以被该类所有的实例对象共享。

博学谷一一让IT教学更简单,让IT学习更有效

8、在一个类中,除了可以定义属性、方法,还可

以定义类,这样的类被称为一内部类O

9、在Java中,提供了一个」avadoc命令,用

于将程序中的文档注释提取出来,生成HTML

格式的帮助文档。

10、所谓类的封装是指在定义一个类时,将类中的

属性私有化,即使用.private关键字来修

饰。

二,判断题

1.在定义一个类的时候,如果类的成员被private

所修饰,该成员不能在类的外部被直接访问。对

2.Java中的每个类都至少有一个构造方法,一个

类中如果没有定义构造方法,系统会自动为这个

类创建一个默认的构造方法。对

博学谷一一让IT教学更简单,让IT学习更有效

3、声明构造方法时,不能使用private关键字修饰。

4、类中static修饰的变量或方法,可以使用类名或

对象的引用变量访问。对

5、方法内部类中不能访问外部类的成员变量。错

三、选择题

1、类的定义必须包含在以下哪种符号之间?B

A、方括号口B、花括号{}C、双引号

2.下面哪一个是正确的类的声明?D

A.publicvoidHH{…}

B.publicclassMove(){...}

C.publicclassvoidnumber{}

D.publicclassCar{...}

3.在以下什么情况下,构造方法会被调用?B

博学谷一一让IT教学更简单,让IT学习更有效

A.类定义时B.创建对象时C.调

用对象方法时D.使用对象的变量时

4.下面对于构造方法的描述,正确有哪些?(多

选)ABC

A.方法名必须和类名相同

B.方法名的前面没有返回值类型的声明

C.在方法中不能使用return语句返回一个值

D.当定义了带参数的构造方法,系统默认的不

带参数的构造方法依然存在

5、使用this调用类的构造方法,下面的说法正确的

是?(多选)ACD(ABCD)

A、使用this调用构造方法的格式为this([参数

1,参数2…])

B.只能在构造方法中使用this调用其它的构造

方法

博学谷一一让IT教学更简单,让IT学习更有效

C.使用this调用其它构造方法的语句必须放在

第一行

D.不能在一个类的两个构造方法中使用this互

相调用

6.下面哪些可以使用static关键字修饰?(多

选)AC(ACD)

A.成员变量B.局部变量C.成员方

法D.成员内部类

7.关于内部类,下面说法正确的是?(多

选)ACD(ABCD)

A.成员内部类是外部类的一个成员,可以访问

外部类的其它成员

B.外部类可以访问成员内部类的成员

C.方法内部类只能在其定义的当前方法中进行

实例化

博学谷一一让IT教学更简单,让IT学习更有效

D.静态内部类中可以定义静态成员,也可以定

义非静态成员

8、下面对于单例设计模式的描述,正确的是?(多

选)BCD(ABCD)

A.类中定义一个无参的构造方法,并且声明为

私有

B.在内部创建一个该类的实例对象,使用静态

变量引用该实例对象

G使用private修饰静态变量,禁止外界直接

访问

D.定义静态方法返□该类实例

9,请先阅读下面的代码D

publicclassTest{

publicTest(){

System.out.printin("构造方;5—被调用了");

)

publicTest(intx){

this();

System.out.printin("构造方法二被调用了");

博学谷一一让IT教学更简单,让IT学习更有效

publicTest(booleanb){

this(1);

System.out.printin《”构造方法三被调用了");

}

publicstaticvoidmain(String[]args){

Testtest=newTest(true);

)

)

上面程序的运行结果为下列哪一项?

A、构造方法-被调用了B、构造方法二被调用

C.构造方法三被调用了D.以上三个选

项之和

10、Outer类中定义了一个成员内部类Inner,需要

在main()方法中创建Inner类实例对象,以下四种

方式哪一种是正确的?D

A.Innerin=newInner()B.Inner

in=newOuter.Inner();

C.Outer.Innerin=newOuter.Inner();D.

Outer.Innerin=newOuter().newInner();

四.程序分析题

博学谷一让IT教学更简单,让IT学习更有效

阅读下面的程序,分析代码是否能够编译通过,如

果能编译通过,请列出运行的结果。否则请说明编译失

败的原因。

代码一:不能,secret是私有成员,只能类内部访

问(程序不能编译通过,因为在类A中的成员变量secret

用private修饰,所以在类Testi中无法访问)

classA{

privateintsecret=5;

}

publicclassTesti{

publicstaticvoidmain(String[]args){

Aa=newA();

System.out.printin(a.secret++);

)

}

代码二:250(程序不能编译通过,因为在静态方法

method。中不能访问非静态成员变量xo)

publicclassTest2{

intx=50;

staticinty=200;

publicstaticvoidmethod(){

System.out.printin(x+y);

)

publicstaticvoidmain(String[]args){

Test2.method();

)

博学谷一一让IT教学更简单,让IT学习更有效

代码三:Inner为私有内部类,不允许外部访问

(inner)Innerinner=newOuterQ.newInner。;可以用外

部类访问内部类

publicclassOuter{

publicStringname="Outer";

privateclassInner{

Stringname="inner";

voidshowName:){

System.out.printin(name);

)

)

pviblicstahxcvoidmain(Shring[]args){

Innerinner=newOuter().newInner();

System.out.printin();

)

)

五、简答题

1、构造方法和普通的成员方法有什么区别?

构造方法是类的一个特殊成员,它会在类实例化对象

时被自动调用。而普通方法只有在使用的时候才会被调

用。在定义构造方法时要求方法名与类名相同.在方法

名的前面没有返回值类型的声明.在方法中不能使用

return语句返□一个值

博学谷一让IT教学更简单,让IT学习更有效

2、单例设计模式具备哪些特点?

单例模式可以保证在整个程序运行期间针对该类只存在

一个实例对象。

六、编程题

1、请按照以下要求设计一个学生类Student,并进行

测试。

要求如下:

1)Student类中包含姓名、成绩两个属性

2)分别给这两个属性定义两个方法,一个方法用

于设置值,另一个方法用于获取值.

3)Student类中定义一个无参的构造方法和一个

接收两个参数的构造方法,两个参数分别为

姓名和成绩属性赋值

博学谷一让IT教学更简单,让IT学习更有效

4)在测试类中创建两个Student对象,一个使

用无参的构造方法,然后调用方法给姓名和

成绩赋值,一个使用有参的构造方法,在构

造方法中给姓名和成绩赋值

2、定义一个Father和Child类,并进行测试。

要求如下:

1)Father类为外部类,类中定义一个私有的String

类型的属性name,name的值为"zhangjun"o

2)Child类为Father类的内部类,其中定义一

个introFather()方法,方法中调用Father

类的name属性。

3)定义一个测试类Test,在Test类的main()

方法中创建Child对象,并调用introFather

()方法。

博学谷一一让"教学更简单,让IT学习更有效

第4章面向对象(下)

一.填空题

1.在Java语言中,允许使用已存在的类作为基础

创建新的类,这种技术我们称为继承

2.一个类如果实现一个接口,那么它就需要实现接口

中定义的全部一方法,否则该类就必须定义成一

抽象类

3.在程序开发中,要想将一个包中的类导入到当前

程序中,可以使用Jmport关键字。

4.一个类可以从其它的类派生出来,派生出来的类称

为一子类,用于派生的类称为一基类或者—

父类

5.JDK中定义了大量的异常类,这些类都是

.Exception类的子类或者间接子类。

6.定义一个Java类时加果前面加使用』nal

博学谷一一让IT教学更简单,让IT学习更有效

关健字修饰,那么该类不可以被继承。

7、如果子类想使用父类中的成员,可以通过关犍字

—super_一—引用父类的成员。

8.在Java语言中,所有的类都直接或间接继承E

.Object类。

9、异常的捕获通常由try.catch两部分组成,

_try代码块用来存放可能发生异常,

_catch代码块用

来处理产生的异常。

10、在Java语言中,要想是将一个已编译的类打包

成jar文件,可以使用的命令是」ar-c、f

要想在命令行窗口运行jar文件,可以使用的

命令是一java-jar。

二、判断题

L抽象方法必须定义在抽象类中,所以抽象类中的方

博学谷一一让IT教学更简单,让IT学习更有效

法都是抽象方法。错

2、Java中被final关键字修饰的变量,不能被重新

赋值。对

3、不存在继承关系的情况下,也可以实现方法重写。

4、package声明语句应当为Java源文件中的第一

条语句。对

5、接口中只能定义常量和抽象方法。错(对)

三、选择题

1、在类的继承关系中,需要遵循以下哪个继承原

则?B

A、多重B、单一C、双重D、

不能继承

2、在Java语言中,以下哪个关键字用于在方法上

声明抛出异常?C

博学谷一一让IT教学更简单,让IT学习更有效

A.tryB.catchC.throws

D.throw

3、关于super关键字以下说法哪些是正确的?(多

选)ABD(ABC)

A、super关键字可以调用父类的构造方法

B、super关键字可以调用父类的普通方法

C、super与this不能同时存在于同一个构造方法中

D、super与this可以同时存在于同一个构造方法中

4、以下说法哪些是正确的?(多选)ABCD

A、Java语言中允许一个类实现多个接口

B、Java语言中不允许一个类继承多个类

C、Java语言中允许一个类同时继承一个类并实

现一个接口

D、Java语言中允许一个接口继承一个接口

5、类中的一个成员方法被下面哪个修饰符修饰,该

博学谷一一让IT教学更简单,让IT学习更有效

方法只能在本类被访问?c

A.publicB.protectedC.private

D.default

6、关于抽象类的说法哪些是正确的?(多选)AC

A、抽象类中可以有非抽象方法。

B、如果父类是抽象类,则子类必须重写父类所

有的抽象方法。

C、不能用抽象类去创建对象。

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

7、在Java中,要想让一个类继承另一个类,可以

使用以下哪个关犍字?C

A.inheritsB.implementsC.extends

D.modifies

8.System类位于以下哪个包中?D

A.java.iojava.utiljava.awtD.

博学谷一一让IT教学更简单,让IT学习更有效

java.lang

9、已知类的继承关系如下:A

classEmployee;

classManagerextendsEmployee;

classDirectorextendsEmployee;

则以下语句能通过编译的有哪些?

A.Employeee=newManager();B.

Directord=newManager();

C.Directord=newEmployee();D.

Managerm=newDirector();

10、编译运行下面的程序,结果是什么?B

publicclassA{

publicstaticvoidmain(String[]args){

Bb=newB();

b.test();

)

voidtest(){

System.out.print("A");

)

)

classBextendsA{

voidtest(){

super.test();

System.out.print("B");

)

)

A.产生编译错误B.

博学谷一一让IT教学更简单,让IT学习更有效

代码可以编译运行,并输出结果AB

C代码可以编译运行,但没有输出D、

编译没有错误,但会产生运行时异常

四、分析题

阅读下面的程序,分析代码是否能编译通过,如果能

编译通过,请列出运行的结果。如果不能编译通过,

请说明原因。

代码一:进入catch代码块

进入finally代码块(程序编译能通过这是因为intx

=2/0;System.out.println(x);这两条语句使用了try块,

捕获了程序因为除以0而产生的异常情况,之后程序会

继续向下执行,输出“进入catch代码块",“进入finally

代码块)

publicclassTestOl{

publicstaticvoidmain(String[]args){

try(

intx=2/0;

System.out.printin(x);

博学谷一一让IT教学更简单,让IT学习更有效

}catch(Exceptione){

System.out.printin("iSAcatch代码块”);

}finally{

System,out.printin("^Afinally代码块”);

}

}

代码二:不能,filial修饰shout,不能被重写(程序编

译不通过,这是因为在程序中使用了final关键字修饰

Animal类,使得Animal类不能被继承°shout。方法中

同样使用了final关键字,使得该方法不能被重写。)

finalclassAnimal{

publicfinalvoidshout(){

//程序代码

}

)

classDogextendsAnimal{

publicvoidshout(){

//程序代码

)

)

classTest02{

publicstaticvoidmain(String[]args){

Dogdog=newDog();

)

)

代码三:动物叫!

汪汪……

classAnimal{

voidshout(){

System.out.println("动物叫!");

博学谷一一让IT教学更简单,让IT学习更有效

)

classDogextendsAnimal{

voidshout(){

super.shout();

System,out.printin...");

)

)

publicclassTest03{

publicstaticvoidmain(String[]args){

Animalanimal=newDog();

animal.shout();

)

}

代码四:不能,Dog没有实现Animal所有方法,Dog

为抽象类不能创建对象(程序编译不通过,因为接口中定

义的方法不能有方法体所以定义的eat()方法是错误的。

接口中的方法必须在子类中全部实现,由于run。方法在

子类中并没有重新实现,所以这也是错误的。)

interfaceAnimal{

voidbreathe();

voidrun();

voideat(){};

)

classDogimplementsAnimal{

publicvoidbreathe(){

System.out.printin("I'mbreathing")

)

publicvoideat(){

System.out.printin("I*meathing")

}

)

publicclasstest04{

publicstaticvoidmain(String[]args){

博学谷一一让IT教学更简单,让IT学习更有效

Dogdog=newDog();

dog.breathe();

dog.eat();

}

)

五、简答题

1、什么是方法重写?

在继承关系中,子类的方法与父类的某一方法

具有相同的方法名、返回类型和参数列表,则称

子类的该方法重写(覆盖)父类的方法。

2、什么是多态?

多态意味着一个对象有着多种形态,可以在特

定的情况下,表现不同的状态,从而对应着不同的属性

和方法。简单的说,多态就是使用父类类型的变量引用

子类对象,根据被引用子类对象的特性,程序会得到不

同的运行效果。

3、抽象类和接口的区别?

在Java中,使用abstract关键字修饰的类称之

博学谷一一让IT教学更简单,让IT学习更有效

为抽象类。抽象类是不能被实例化的,通常需要

写一个子类来继承抽象类,同时实例化子类来获

得该类的对象。抽象类通常用于表示一种抽象的

接口可以说是一种特殊的抽象类,接口中只能定

义常量和抽象方法。由于接口的特殊性,在定义

时需要使用interface关健字。

六,编程题

请按照题目的要求编写程序并给出运行结果。

1.设计一个学生卷母刊世t和它的一个子类

Undergraduatef,要『

1)Student类L

一^^含两个­

Student的属

博学谷一一让IT教学更简单,让IT学习更有效

Circle,要求如下:

1)Shape接口中有一个抽象方法area(),方法

接收有一个double类型的参数,返□

double类型的结果

2)Square和Circle中实现了Shape接口的area()

抽象方法,分别求正方形和圆形的面积并返□

在测试类中创建Square和Circle对象,计

算边长为2的正方形面积和半径为3的圆形面积

3.自定义一个异常类NoThisSoundException和

Player类在Player的play()方法中使用自定义

异常,要求入下:

1)NoThisSongException继承Exception类,

类中有一个无参和一个接收一个String类型参数

的构造方法,构造方法中都使用super关键字调

用父类的构造方法。

博学谷一一让IT教学更简单,让IT学习更有效

2)Player类中定义一个play(intindex)方法,

方法接收一个int类型的参数,表示播放歌曲的

索引,当index>10时,paly()方法用throw关键

字抛出NoThisSongException异常,创建异常对

象时,调用有参的构造方法,传入〃您播放的歌

曲不存在“。

3)在测试类中创建Player对象,并调用

play()方法测试自定义的NoThisSongException

异常,使用try...catch语句捕获异常,调用

NoThisSongException的getMessage。方法fl"印

出异常信息。

第5章多期呈

一.填空题

博学谷一一让IT教学更简单,让IT学习更有效

1、一个应用程序中有多条并发执行的线索,每条线

索都被称作一个线程它们会交替执行,彼

间可以进行_通信

2、在实现多线程的程序时有两种方式,一是通过继

—Thread承类,二是通过实现Runnable接

口。

3、yield。方法只能让相同优先级或者更高优先级、

处于—就绪状态的线程获得运行的机会。

4、在Java语言中,同步方法需要用到关键字

.synchronized,,对于同步方法而言无需指定

同步锁,它的同步

锁是方法所在的.对象也就是

.this(关键字)。

博学谷一一让IT教学更简单,让IT学习更有效

5、在多任务系统中,每个独立执行的程序称之为_

线程_______也就是“正在运行的程序二

6、线程的整个生命周期分为五个阶段,分别是一新

建就绪运行阻塞和死

亡O

7、线程的优先级用1-10之间的整数来表示,其中

_10__代表优先级最高,_1__代表优先级最低。

8、在Thread类中,提供了一^t*start。方法,该方

法用于启动线程当新线程启动后,系统

会自动调用一run()方法。

9、要想解决线程间的通信问题,可以使用

wait()、notifyO_notifyALL()方法。

10、要将某个线程设置为后台线程,需要调用该线

程的_setDaemon(true)方法,该方法必须

在一start。方法之前调用。

博学谷一一让IT教学更简单,让IT学习更有效

1.当我们创建一个线程对象时,该对象表示的线程

就立即开始运行。错

2.如果前台线程全部死亡后台线程也会自动死亡。

3.同步代码块中的锁对象可以是任意类型的对象。

4、静态方法不能使用synchronized关犍字来修饰。

5.线程结束等待或者阻塞状态后,会进入运行状态。

三,选择题

1.Thread类位于下列哪个包中?B

A.java.ioB.java.langC.

java.utilD.java.awt

博学谷一一让IT教学更简单,让IT学习更有效

2、关于线程的创建过程,下面四种说法正确的有哪

些?(多选)AC

A、定义Thread类的子类,重写Thread类的

run。方法,创建该子类的实例对象,调用对

象的start。方法

B、定义Thread类的子类,重写Thread类的

nmO方法,创建该子类的实例对象,调用对

象的nm()方法

G定义一个实现Runnable接口的类并实现

nmO方法,创建该类实例对象,将其作为参

数传递给Thread类的构造方法来创建

Thread对象,调用Thread对象的start。方

D、定义一个实现Runnable接口的类并实现

nm()方法,创建该类对象,然后调用nmO方法

博学谷一一让IT教学更简单,让IT学习更有效

3、对于通过实现Runnable接口创建线程,下面说法

正确的有哪些?(多选)ABC

A、适合多个相同程序代码的线程去处理同一个

资源的情况

B、把线程同程序代码、数据有效的分离,很好

的体现了面向对象的设计思想

C、可以避免由于Java的单继承带来的局限性

D、编写简单,可以不通过Thread类直接创建

线程

4、对于线程的生命周期,下面四种说法正确的有哪

些?(多选)ABC(BC)

A、调用了线程的start。方法,该线程就进入运

行状态(就绪,还要获得CPU使用权)

博学谷一一让IT教学更简单,让IT学习更有效

B、线程的nm()方法运行结束或被未catch的

InterruptedException等异常终结,那么该

线程进入死亡状态

C.线程进入死亡状态,但是该线程对象仍然是

一个Thread对象,在没有被垃圾□收器□

收之前仍可以像引用其它对象一样引用它

D.线程进入死亡状态后,调用它的start。方法

仍然可以重新启动

5.对于死锁的描述,下面四种说法正确有哪些?(多

选)AB(ABD)

A.当两个线程互相等待对方释放同步锁时会发

生死锁

B.Java虚拟机没有检测和处理死锁的措施

C.一旦出现死锁,程序会发生异常

博学谷一一让IT教学更简单,让IT学习更有效

D.处于死锁状态的线程处于阻塞状态,无法继

续运行

6.i=i!1!个选项中,哪些是线程进入阻塞状态的原

因?(多选)ABC

A.线程试图获取某个对象的同步锁,而该锁被

其它线程持有

B.线程调用了另一个线程的join。方法

C、当线程调用了一个阻塞式的IO方法

D.线程调用了setDaemon(booleanb)方法

7、线程调用sleep。方法后,该线程将进入以下哪种

状态?C

A、就绪状态B、运行状态

C.阻塞状态D,死亡状态

8.在以下哪种情况下,线程进入就绪状态?D

博学谷一一让IT教学更简单,让IT学习更有效

A、线程调用了sleep。方法时B、线程调

用了join。方法(终止)

C、线程调用了yield。方法时D、线程调

用了notify。方法??

9、下面四个选项中,对线程同步的目的描述正确的

有哪些?(多选)AD(AB)

A、锁定资源,使同一时刻只有一个线程去访问

它,防止多个线程操作同一个资源引发错误

B、提高线程的执行效率

C、让线程独占一个资源

D、让多个线程同时使用一个资源

10、对于wait。方法,下面说法正确的是?(多

选)ABCD

A、wait。方法的调用者是同步锁对象

B、wait。方法使线程进入等待状态

博学谷一一让IT教学更简单,让IT学习更有效

C、调用同一锁对象的notify。或notifyAU()方法

可以唤醒调用wait()方法等待的线程

D、调用wait。方法的线程会释放同步锁对象

四、程序分析题

阅读下面的程序,分析代码是否能编译通过,如果

能编译通过,请列出运行的结果。如果不能编译通

过,请说明原因。

1.代码一:不能,RunHandler没有继承Thread,

不能用Thread创建对象(程序不能编译通过,因为

RunHandler类没有实现Runnable接口,因此

RunHandler的实例对象不能作为参数传递给Thread的

构造方法。)

classRunHandler{

publicvoidrun(){

System.out.printin("run");

)

}

publicclassTest{

publicstaticvoidmain(String[]args){

Threadt=newThread(newRunHandler());

博学谷一一让IT教学更简单,让IT学习更有效

t.start();

}

}

2.代码二:thisisrun(程序不能编译通过,因为

Thread的子类A重写的nm()方法的访问级别

不能低于父类nm()方法的。访问级别)

publicclassAextendsThread{

protectedvoidrun(){

System.out.printin("thisisrun()");

)

publicstaticvoidmain(String[]args){

Aa=newA();

a.start();

)

}

3.代码三:Exception(程序不能编译通过,因为同步

方法中调用wait()方法的对象必须为同步锁对象)

publicclassTest{

privateObjectobj=newObject();

publicsynchronizedvoida(){

try(

obj.wait();改this.wait()

System.out.printin("waiting");

}catch(InterruptedExceptione){

System.out.printin("Exception'*);

}

)

publicstaticvoidmain(String[]args){

newTest().a();

)

博学谷一一让IT教学更简单,让IT学习更有效

4.为了使下I=I的程序能够输出"Threadisrunning""

请在在空格处填上相应的代码。

publicclassBimplementsRunnable{

publicstaticvoidmain(String[]args){

Threadt=newThread(newB());

_t.start()_____________________//此处填空

)

publicvoidrun(){

System.out.printin("Threadisrunning");

)

publicvoidgo(){

温馨提示

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

评论

0/150

提交评论