搜档网
当前位置:搜档网 › 《Java语言程序设计基础教程》

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

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

第1章 Java程序设计概述

1.9 练习思考题

1、Java运行平台包括三个版本,请选择正确的三项:()

A. J2EE

B. J2ME

C. J2SE

D. J2E

解答:A,B,C

2、Java JDK中反编译工具是:()

A. javac

B. java

C. jdb

D. javap

解答:D

3、public static void main方法的参数描述是:()

A. String args[]

B. String[] args

C. Strings args[]

D. String args

解答:A,B

4、在Java中,关于CLASSPATH环境变量的说法不正确的是:()

A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。

B. 编译器用它来搜索各自的类文件。

C. CLASSPATH是一个目录列表。

D. 解释器用它来搜索各自的类文件。

解答:A

5、编译Java Application源文件将产生相应的字节码文件,扩展名为()

A. .java

B. .class

C. .html

D. .exe

解答:B

6、开发与运行Java程序需要经过的三个主要步骤为___编辑源程序____、______编译生成字节码______和_____解释运行字节码____。

7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是_Applet_类的子类并且存储该源程序文件的文件名为_MyApplet.java_。

8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生_3_个文件名与类名相同而扩展名为_.class_的字节码文件。

9、开发与运行Java程序需要经过哪些主要步骤和过程?

答:1编写Java源文件:使用文本编辑器(edit或记事本),拓展名为.java

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

2 2编译Java源文件:使用Java编译器(javac.exe)。得到字节码文件*.class

3运行Java程序:Java应用程序使用Java解释器(java.exe)执行字节码文件。10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名

规则是怎么样的?

答:1.Java程序由类组成。2.应用程序可以没有public类,小应用程序一定有一个类是public类(主类)。3.应用程序:如果只有一个类,源文件名与该类的类名相同,拓展名为.java;有多个类时,如果有public类(最多一个),源文件名与public类的类名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名相同即可,拓展名为.java。

11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

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

2.7练习思考题

1、从下面选项中,选择三个有效的标示符:()

A. IDoLikeTheLongNameClass

B. $byte

C. const

D. _ok

E. 3_case

解答:A,B,D

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

A. $user

B. point

C. You&me

D. _endline

解答:C

3、下列不属于Java保留字的是:()

A. sizeof

B. super

C. abstract

D. break

解答:A

4、下面哪些java语句会导致无限循环?( )

I、while (true) i = 0;

II、 while (false) i = 1;

III、while (!false) i = 0;

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

A、仅仅III

B、I 和III

C、仅仅I

D、I, II 和III

解答:B

5、下列整型数据类型中,需要内存空间最少的是( )。

A. short

B. long

C. int

D. byte

解答:D

6、下面代码执行后,正确的输出结果是:()

public class Example {

public static void main(String args[]) {

int l = 0;

do {

System.out.println("Doing it for l is:" + l);

} while (--l > 0);

System.out.println("Finish");

}

}

A. Doing it for l is 3

B. Doing it for l is 1

C. Doing it for l is 2

D. Doing it for l is 0

E. Doing it for l is ?C1

F. Finish

解答:D,F

7、若有定义int a=1,b=2; 那么表达式(a++)+(++b) 的值是:()

A. 3

B. 4

C. 5

D. 6

解答:B

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

A. 0

B. 1

C. false

D. true

解答:D

9、假定有变量定义: int k=7,x=12; 那么能使值为3的表达式是:()

A. x%=(k%=5)

B. x%=(k-k%5)

C. x%=k-k%5

D. (x%=k)-(k%=5)

解答:D

10、执行完以下代码int[ ] x = new int[25];后,以下说明正确的是:()

3

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

4

A. x[24]为0

B. x[24]未定义

C. x[25]为0

D. x[0]为空

解答:A

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

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

int max=x[0];

for(int i=1;i

if(x[i]>max)

max=x[i];

}

System.out.println(max);

A. 2

B. -8

C. 7

D. 9

解答:D

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

A. 3

B. 3.5

C. 4

D. 5

解答:A

13、有整型数组:int[] x={2,33,88,5,10};,则调用方法Arrays.sort(x) 后,数组x中的元

素值依次是?()

A. 88 33 10 5 2

B. 2 5 10 33 88

C. 88 10 2 33 5

D. 5 33 2 10 88

解答:B

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

A. int []a;

B. int []b=new int[10];

C. int c[]=new int[];

D. int d[]=null;

解答:C

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

A. int a[][]=new int[5][5];

B. int [][]b=new int[5][5];

C. int []c[]=new int[5][5];

D. int [][]d=new int[5,5];

解答:D

16、关于下面的程序,正确的结论是______。

public class ex4_7{

public static void main(String args[]){

int a[]=new int[5];

boolean b[]=new boolean[5];

System.out.print(a[1]);

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

System.out.println(b[2]);

}

}

A. 运行结果为0false

B. 运行结果为1true

C. 程序无法通过编译

D. 可以通过编译但结果不确定

解答:A

17、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用__2__字节内存空间,这样,无论是中文字符还是英文字符,都是占用___2___字节内存空间。

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

19、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为___ture___和___false___。

20、设有数组定义:

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

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

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

int s = 0;

for (int i = 0; i < MyIntArray.length; i++)

if (i % 2 == 1)

s += MyIntArray[i];

System.out.println(s);

21、数组对象的长度在数组对象创建之后,就___不能___改变。数组元素的下标总是从__0__开始。

22、对于数组int[][]t={{1,2,3},{4,5,6}}来说,t.length等于__6___,t[0].length等于__3___。

23、已知数组a的定义为“int a[]={1,2,3,4,5};”,则a[2]=__3__,数组b的定义为“int b[]=new int[5];”,则b[2]=___0___,数组c的定义为“Object []c=new Object[5];”,则c[2]=___0___。

24、调用数组元素时,用__一个统一的数组名__和___一个下标___来唯一确定数组中的元素。

25、什么是数组?数组有哪些特点?Java中创建数组需要哪些步骤?如何访问数组的第一个元素?

答:数组是一组具有相同数据类型的数据的有序结合。

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

27、编写一个程序使之从键盘读入10个整数存入整型数组a中,然后逆序输出这10个整数。

28、某人有5张3分和4张5分的邮票,请编写一个程序,计算由这些邮票中的1张或若干张可以得到多少种不同的邮资。

29、分析写出下列程序完成的功能。

public class sun {

public static void main(String args[]) {

5

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

6

double sum = 0.0;

for (int i = 1; i <= 100; i++)

sum += 1.0 / (double) i;

System.out.println("sum=" + sum);

}

}

30、编写一个字符界面的Java Application程序,接受用户输入的10个整数,并输出这

10个整数的最大值和最小值。

31、如果我国经济以每年10%的速度保持稳定增长,请编写一个程序,计算每年达到多少,多少年可以实现总量翻两番。

class exA4_1{

public static void main(String args[]){

int a=0;

double i=0.10,sum=1;

while(sum<=4){

sum=(i+1)*sum;

a++;

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

}

System.out.println("需要"+a+"年实现两番");

}

}

第3章类和对象

3.9 练习思考题

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

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

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

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

D. 局部变量在使用前必须被初始化。

解答:C

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

A. java.applet

B. https://www.sodocs.net/doc/23368930.html,ng

C. java.io

D. java.awt

解答:B

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

3、当类的成员未用访问权限修饰符时,Java认为此成员的访问权限为()。

A. private

B. protected

C.friendly

D.public

解答:C

4、下面哪个关键字不是用来控制对类成员的访问的?()

A. public B. protected

C. default

D. private

解答:C

5、下面哪一个特性不是面向对象编程主要体现的()。

A. 封装性

B. 继承

C. 多态

D. 类

解答:C

6、不允许作为类及类成员的访问控制符的是()。

A. public

B. private

C. static

D. protected

解答:C

7、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为()。

A、static void method( )

B、public void method( )

C、final void method( )

D、abstract void method( )

解答:A

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

//point x

public class Interesting{

//do something

}

A. String str;

B. static int PI=3.14;

C. public class MyClass{//do other thing…}

D. import java.awt.*;

解答:D

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

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

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

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

D、局部变量在使用前必须被初始化。

解答:C

10、下列哪个类声明是正确的?()

A、abstract final class HI{}

7

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

8

B、abstract private move(){}

C、protected private number;

D、public abstract class Car{}

解答:D

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

12、下列命题为真的是:()

A、所有类都必须定义一个构造函数。

B、构造函数必须有返回值。

C、构造函数可以访问类的非静态成员。

D、构造函数必须初始化类的所有数据成员。

解答:C

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

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

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

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

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

解答:A,C

14、在Java中,下面关于包的陈述中正确的是()

A、包的声明必须是源文件的第一句代码。

B、包的声明必须紧跟在import语句的后面。

C、只有公共类才能放在包中。

D、可以将多个源文件中的类放在同一个包中。

解答:A,D

15、__abstract抽象__方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。______方法是不能被当前类的子类重新定义的方法。

16、什么叫方法的重载?构造方法可以重载么?

答:方法的重载是指在一个类中用同一个名字定义多个方法,每个方法的参数必须不同,或者是参数的个数不同,或者是参数的类型不同。可以。

17、简述实例变量和类变量的区别。

答:每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。

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

类变量仅在生成第一个对象时分配内存,所有实例对象共享一个类变量,每个实例对象对类变量的改变都会影响到其他的实例对象。类变量可通过类名直接访问,无须先生成一个实例对象,也可以通过实例对象访问类变量。

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

4.5 练习思考题

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

A、import

B、package

C、class

D、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、关于抽象类,正确的是______。

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

B. 某个非抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法

C. 不能用抽象类去创建对象

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

解答:B

6、下列哪个类是由编译器自动生成对象的特殊类,是用于类操作?()

9

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

10

A、Class类

B、Thread类

C、System类

D、Object类

解答:A

7、下面关于继承的哪些叙述是正确的。( )

A、在java中只允许单一继承。

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

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

D、java的单一继承使代码更可靠。

解答:A,D

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

abstract class ex4_5_10_A {

abstract int getinfo();

}

public class ex4_5_10 extends ex4_5_10_A {

private int a = 0;

public int getinfo() {

return a;

}

public static void main(String args[]) {

ex4_5_10 b = new ex4_5_10();

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

}

}

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

A. 输出结果为0

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

C. 第5行不能通过编译

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

解答:A

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

class ex4_5_11_A {

protected static int count = 0;

public ex4_5_11_A() {

count++;

}

}

class ex4_5_11_B extends ex4_5_11_A {

public ex4_5_11_B() {

count++;

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

}

}

class ex4_5_11 {

public static void main(String args[]) {

ex4_5_11_B x = new ex4_5_11_B();

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

}

}

A. count=1

B. count=2

C. count=3

D. count=4

解答:B

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

class Person

{ long id; // 身份证号

String name; // 姓名

}

class Student extends Person

{ int score; // 入学总分

int getScore(){

return score;

}

}

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

A、包含关系

B、继承关系

C、关联关系

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

解答:B

10、对于接口的实现,不可以构造一个接口对象,但可以声明一个接口___方法?___。

11、在Java语言中所有的类都是直接或间接地继承___超___类而得到的。

12、在Java中一个父类可以有___1___个子类,一个类只能有___1___个直接父类。

13、什么是继承?什么是多重继承和单继承?Java采用何种机制来实现多重继承?

答:继承是面向对象编程技术的一块基石,是一种由已有的类创建新类的机制。java 中不支持多重继承。

14、什么是隐藏?什么是重写?二者有何区别?

答:隐藏是指当父类和子类有相同名字的属性的时候,父类的同名变量形式上不可见了。但是实际还是存在的。譬如A有int变量a = 10,父类B有变量a = 5;当B b = new A()得时候,若用b.a 那么父类的5就被隐藏了,此时b.a = 子类的10。在子类里面访问super.a 得时候只能得到子类的值

重写是针对方法的,通常是父类的方法在子类中重新写过。当执行子类的实例得时候,实际运行的是子类的方法。在子类里面可以通过super.method()来显式的访问

11

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

12 15、子类会继承父类的所有方法和属性么?

答:子类不能继承父类的所有方法和属性,只能继承父类所有的非private(私有)的

属性和方法,而private成员是不能被继承的。

16、设计一个Student类,以一维数组存储一个班级的学生信息。要求:

1)将Student设计成一个接口

2)自定义一个包来管理所设计的类

17、定义一个接口,该接口中只有一个抽象方法getClassName()。设计一个类Horse,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名。

基础开发篇

第5章 Java API

5.9练习思考题

1、阅读下列代码后,正确的说法是()

public class Person {

static int arr[] = new int[10];

public static void main(String args[]) {

System.out.println(arr[1]);

}

}

A、编译时将产生错误

B、编译时正确,运行时将产生错误

C、输出零

D、输出空

解答:C

2、仔细分析下面程序,正确的输出结果是()

public class Test1 {

public static void changeStr(String str) {

str = "welcome";

}

public static void main(String[] args) {

String str = "1234";

changeStr(str);

System.out.println(str);

}

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

}

A、welcome

B、welcome1234

C、1234

D、1234welcome

解答:C

3、Java语言中的一些常用的实用工具,如处理时间的Date类,处理变长数组的Vector 类等,所在的包是()。

A、https://www.sodocs.net/doc/23368930.html,ng包

B、java.io包

C、java.awt包

D、java.util包

解答:D

4、下面代码执行后,正确的输出结果是:()

String s1="You are hired!";

System.out.println(s1.replace('h','f')); //用f把字串中的h替换了

System.out.println(s1);

A. You are fired!

B. You are fired!

You are hired! You are fired!

C. You are hired!

D. You are hired!

You are hired! You are fired!

解答:A

5、下面的程序段执行后输出的结果是()

StringBuffer buf=new StringBuffer("China2008");

buf.insert(5,"@");

System.out.println(buf.toString());

A、China2008@

B、@China2008

C、China@2008

D、China#2008

解答:C

6、在Java中,所有类的根类是()。

A、https://www.sodocs.net/doc/23368930.html,ng.Object

B、https://www.sodocs.net/doc/23368930.html,ng.Class

C、java.applet.Applet

D、java.awt.Frame

解答:A

13

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

14 第6章图形用户界面设计

6.7练习思考题

1、下列哪个布局管理器中的按钮位置会根据Frame的大小改变而改变?()

A. BorderLayout

B. CardLayout

C. GridLayout

D. FlowLayout

解答:D

2、下面的组件都属于容器,父类属于java.awt.Window的容器是()

A、Frame

B、Panel

C、Container

D、Applet

解答:A

3、关于以下的组件的接口,正确的是()

A、TextArea组件可实现的接口是ActionListener

B、List组件可实现的接口,除了ItemListener,还可以是ActionListener

C、Choice组件可实现的接口是ActionListener

D、以上都不对

解答:B

4、下列哪一项是一个用于在GridLayout中的特定区域中放置多个组件的容器?

A、Applet

B、Panel

C、Button

D、Rectangle

解答:B

5、关于对话框(Dialog)说法错误的是?()

A、对话框是Window类的子类。

B、对话框和一般窗口的区别在于它依赖于其他窗口。

C、对话框分为模式和非模式两种。

D、文件对话框的构造方法:Filedialog fdlg=new FileDialog("filedialog");

解答:D

6、下列容器中哪一个是从java.awt.Window继承的?()

A、Frame

B、Panel

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

C、Container

D、Applet

解答:A

7、在Java中,对组件可实现不同的布局,下列哪个不对()

A、顺序布局(FlowLayout)

B、边界布局(BorderLayout)

C、网络布局(GridLayout)

D、中央布局(CenterLayout)

解答:D

8、下面关于事件监听的说明,哪一个语句是正确的。()

A. 所有组件,都不允许附加多个监听器

B. 如果多个监听器加在一个组件上,那么事件只会触发一个监听器

C. 组件不允许附加多个监听器

D. 监听器机制允许按照我们的需要,任意调用addXxxxListener 方法多次,而且

没有次序区别

解答:D

9、下面哪个事件监听器可以处理在文本框中输入回车键的事件______。

A. ItemListener

B. ActionListener

C. KeyListener

D. MouseListener

解答:B

10、Frame类对象的默认布局是什么布局?()。

A、FlowLayout布局

B、BorderLayout布局

C、CardLayout布局

D、GridLayout布局

解答:B

11、不能添加到Container中的是?()

A、an Applet

B、a Component

C、a Container

D、a MenuComponent

解答:A

12、Panel类对象的默认布局是什么布局?()。

A、FlowLayout布局

B、BorderLayout布局

C、CardLayout布局

D、GridLayout布局

解答:A

13、Java中GUI工具包有___AWT___和__Swing____。

14、通过调用方法______可以改变当前容器的布局方式。

15、通过______方法向容器中添加组件。

16、AWT布局管理器有__FlowLayout___、__BorderLayout____、___GridLayout___、___CardLayout___和__GridBayLayout____。

15

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

16 17、什么是GUI?功能是什么?

答:图形用户界面(Graphics User Interface,GUI)是指用图形的方式,借助菜单、按

钮等标准界面元素和鼠标操作,帮助用户方便的向计算机系统发出指令,启动操作,并将系统运行结果以图形方式显示给用户的技术。

18、利用AWT控件编写一个求解一元二次方程根的程序,要求:

(1)具有一元二次方程三个系数a、b、c的输入界面。

(2)显示b*b-4*a*c的值。

(3)显示求出的根。

19、编写一个应用程序,窗口标题为“移动按钮”,窗口布局为null,在窗口中有两个按钮,单击其中一个按钮能够让另一个按钮移动。

20、实现窗口登陆对话框,要求输入用户名和密码,如果输入正确,弹出对话框提示正确,否则提示错误。

第7章多线程

7.8练习思考题

1、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?()

A、安全性

B、多线性

C、跨平台

D、可移植

解答:B

2、Runnable接口中的抽象方法是()。

A、start

B、stop

C、yield

D、run

解答:D

3、有以下程序段

class MyThread extends Thread {

public static void main(String args[]) {

MyThread t = new MyThread();

MyThread s = new MyThread();

t.start();

System.out.print("one.");

s.start();

System.out.print("two.");

}

public void run() {

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

System.out.print("Thread");

}

}

则下面正确的选项是()

A、编译失败

B、程序运行结果为:one.Threadtwo.Thread

C、程序运行结果是:one.two.ThreaThread

D、程序运行结果不确定

解答:D

4、下列方法中可以用来创建一个新线程的是()

A、实现https://www.sodocs.net/doc/23368930.html,ng.Runnable接口并重写start()方法。

B、实现https://www.sodocs.net/doc/23368930.html,ng.Runnable接口并重写run()方法。

C、继承https://www.sodocs.net/doc/23368930.html,ng.Thread类并重写run()方法。

D、实现https://www.sodocs.net/doc/23368930.html,ng.Thread类并实现start()方法。

解答:B

5、作为类中新线程的开始点,线程的执行是从下面哪个方法开始的。()

A、public void start()

B、public void run()

C、public void int()

D、public static void main(String args[])

解答:A

6、创建一个新线程的方法,可以使用下面哪2种( )

A、继承https://www.sodocs.net/doc/23368930.html,ng.Thread类,并且重载run方法。

B、继承https://www.sodocs.net/doc/23368930.html,ng.Runnable类,并且重载start方法。

C、实现https://www.sodocs.net/doc/23368930.html,ng.thread类,实现run方法。

D、实现https://www.sodocs.net/doc/23368930.html,ng.Runnable接口,实现run方法。

E、实现https://www.sodocs.net/doc/23368930.html,ng.Thread类,实现start方法。

解答:A,D

7、线程有几种状态?

答:创建状态可运行状态不可运行状态死亡状态

8、引起线程中断的常见原因是什么?

答:1、JVM将CPU资源从当前线程切换给其他线程,是本线程让出CPU的使用权处于中断状态;

2、线程使用CPU资源时执行了sleep(int milsecond) 方法,是当前线程进入休眠状态;

3、线程使用CPU资源时执行了wait()方法,是当前线程进入等待状态;

4、在使用CPU资源时,执行某个操作进入了阻塞状态

9、一个线程执行完run()方法后,进入了什么状态?该线程还能再调用start()方法么?

答:当run方法执行完毕,线程就变成死亡状态,在线程没有结束run方法之前,不要让线程再调用star方法,否则将发生IllegalThreadStateException异常。

17

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

18 10、线程在什么状态时,调用isAlive()方法返回的值是false。

答:线程处于新建状态时,调用isAlive方法返回false,线程进入死亡状态后,调用isAlive

方法返回false。

11、建立线程有几种方法?

答:继承Thread方法,覆盖父类方法run()实现线程具体的操作。

用Runnable接口来创建线程,声明一个类并实现Runnable接口,并定义run()方法,将线程代码写入其中,完成这一部分任务。

12、怎样设置线程的优先级?

答:线程的优先级用数字来表示,范围从1到10,即Thread.MIN_PRIORITY到Thread.MAX_PRIORITY。一个线程默认优先级是5,即Thread.NORM_PRIORITY。int getPriority();得到线程优先级,void setPriority(int newPriority);当线程被创建后,通过此方法改变线程的优先级。

13、线程在它的一个完整的生命周期中通常要经历哪几种状态?写出这些种状态并加以说明。

答:1新建状态:声明且创建一个线程类(子类)的对象

2就绪状态:1)启动新建的线程,进入线程队列,排队等候CPU时间片。2)接触阻塞后的线程进入线程队列。

3运行状态:就绪状态的线程获得cpu的资源时,自动调用线程run()方法。

4阻塞状态:正在执行的线程,让出cpu并暂时中止自己的执行。当阻塞原因消除就进入就绪状态。

5消亡状态:当run()方法结束,或者调用stop()或destroy()方法。释放资源。

第8章文件和流

8.7练习思考题

1、创建一个向文件“file.txt”追加内容的输出流对象的语句是()。

A. OutputStream out=new FileOutputStream(“file.txt”);

B. OutputStream out=new FileOutputStream(“file.txt”, “append”);

C. FileOutputStream out=new FileOutputStream(“file.txt”, true);

D. FileOutputStream out=new FileOutputStream(new file(“file.txt”));

E. OutputStream out=new FileOutputStream(new File(“file.txt”)true);

解答:C,E

2、下面类中,属于过滤流FilterInputStream的子类的是()。

A、DataInputStream

B、DataOutputStream

C、PrintStream

D、BufferedOutputStream

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

解答:A

3、FileInputStream流的read方法和FileRead流的read方法有何不同?

答:fileinputstream流的read 读的是二进制;filereader流的read读的是字符。

4、BufferedReader流能直接指向一个文件对象吗?

可以BufferedReader br = new BufferedReader(new FileReader("d:\\a.txt"))

5、请编写一个程序,开启一个文本文件,一次读取其内的一行文本,令每行形成一个String,并将读出的String对象置于LinkedList中,以反相次序显示出LinkedList内的所有内容。

import java.io.*;

import java.util.*;

class exA4_2{

public static void main(String args[]) throws Exception{

LinkedList lines=new LinkedList();

BufferedReader in=

new BufferedReader(new FileReader("exA4_2.java"));

String s;

while((s=in.readLine())!=null)

lines.add(s);

in.close();

ListIterator it=lines.listIterator(lines.size());

while(it.hasPrevious())

System.out.println(it.previous());

}

}

第9章异常处理

9.4 练习思考题

1、为了捕获一个异常,代码必须放在下面()语句块中。

A、try块

B、catch块

C、throws块

D、finally块

解答:A

2、下列常见的系统定义的异常中,有可能是网络原因导致的异常是()。

A、ClassNotFoundException

B、IOException

C、FileNotFoundException

D、UnknownHostException

解答:D

19

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

20 3、下列常见的系统定义的异常中,哪个是输入、输出异常?()

A、ClassNotFoundException

B、IOException

C、FileNotFoundException

D、UnknownHostException

解答:B

4、在代码中,使用catch(Exception e)的好处是( )

A、只会捕获个别类型的异常

B、捕获try块中产生的所有类型的异常

C、忽略一些异常

D、执行一些程序

解答:B

6、异常包含下列那一个内容?()

A、程序中的语法错误

B、程序的编译错误

C、程序执行过程中遇到的事先没有预料到的情况

D、程序事先定义好的可能出现的意外情况

解答:C

7、编写一个异常类MyException,再编写一个类Student,该类有一个产生异常的方

法public void speak(int m) throws MyException,要求参数m的值大于1000时,方法抛出一个MyException对象。最后编写主类,在主类的main方法中用Student创建一个对象,让该对象调用speak方法。

第10章 Java网络编程

10.6 练习思考题

1、在JA V A语言网络编程中,URL类是在https://www.sodocs.net/doc/23368930.html,包中,该类中提供了许多方法用来访问URL对象的各种资源,下列哪个用来获取URL中的端口号()。

A、getFile()

B、getProtocol()

C、getHost()

D、getPort()

解答:D

2、一个URL对象通常包含哪些信息?

3、怎样读取URL中的资源?

4、Java使用哪个组件来显示URL中的HTML文件?

5、客户端的Socket对象和服务器端的Socket对象是怎样通信的?

相关主题