本科Java题库

本科Java题库

Java语言概述 习 题 一

一、简答题

1.Java语言的诞生日是哪一天?它有哪些特点与优势?

2.Java语言程序分为哪几种?Java Application程序和Java Applet程序的主要区别是什么? 3.Java Application程序在结构上有哪些特点?如何编译、运行?被编译后生成什么文件?该文件机器可以直接识别吗?如何执行?

4.安装JDK后如何对JAVA_HOME、PATH和CLASSPATH环境变量进行设置?它们的作用是什么? 5.Java程序在书写上应注意哪些事项?有哪些编码规范?

6.为什么要对程序进行注释?Java中有哪几种注释?文档注释符与多行注释符有何不同? 二、选择题

1.下面关于Java Application 程序结构特点描述中,错误的是( D )。

A.一个Java Application程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。

B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。

C.组成Java Application程序的多个类中,有且仅有一个主类。 D.一个.java文件中定义多个类时,允许其中声明多个public类。 2.编译Java程序后生成的面向JVM的字节码文件的扩展名是( B )。 A..java B..class C..obj D..exe 3.下面关于Java 语言特点的描述中,错误的是( A )。 A.Java是纯面向对象编程语言,支持单继承和多继承。

B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。 C.Java支持多线程编程。

D.Java程序与平台无关、可移植性好。

4.Java SE的命令文件(java、javac、javadoc等)所在目录是( C )。 A.%JAVA_HOME%\\jre B.%JAVA_HOME%\\lib C.%JAVA_HOME%\\bin D.%JAVA_HOME%\\demo

5.下列关于运行字节码文件的命令行参的描述中,正确的是( C )。 A.命令行的命令字被存放在args[0]中。

B.数组args[]的大小与命令行的参数的个数无关。

C.第一个命令行参数(紧跟命令字的参数)被存放在args[0]中。 D.第一个命令行参数被存放在args[1]中。 6.paint()方法使用哪种类型的参数? ( A )

A.Graphics B.Graphics2D C.String D.Color 7.Java的核心包中,提供编程应用的基本类的包是( B )。

A.java.util B.java.lang C.java.applet D.java.rmi 8.编译Java程序时,用于指定生成class文件位置的选项是( A )。 A.-d B.-g C.-verbose D.-nowarn 9.下列标识符(名字)命名原则中,正确的是( C )。 A.类名的首字母小写 B.接口名的首字母小写

C.常量全部大写 D.变量名和方法名的首字母大写 10.下面哪些选项是正确的main方法说明?( D )

A.void main() B.private static void main(String args[]) C.public main(String args[]) D.public static void main(String args[]) 11.下面哪种注释方法能够支持javadoc命令?( C )

A.// B./*...*/ C./**...*/ D./**...**/ 三、判断题

1.Java语言具有较好的安全性和可移植性及与平台无关等特性。( √ ) 2.Java语言的源程序不是编译型的,而是编译解释型的。( √ )

3.Java Application程序中,必有一个主方法main(),该方法有没有参数都可以。( √ ) 4.java.util.Scanner(System.in)可以接收用户从键盘输入的简单数据。( √ ) 5.Java程序中不区分大小写字母。( × )

6.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。( √ )

7.System类中的println()方法分行显示信息,而print()方法不分行显示信息。( √ ) 8.当前路径的标识是“.”。 ( √ )

9.java命令不区分大小写,而javac命令区分大小写。( × )

10.printf()和 format()方法使用指定格式字符串和参数,将格式化字符串写入到PrintStream类型的输出流(System.out对象)中。( √ )

11.在运行字节码文件时,使用java命令,一定要给出字节码文件的扩展名.class。( × )

一、填空题

1.已知:int a =8,b=6; 则:表达式++a-b++的值为( 3 )。

2.已知:boolean b1=true,b2; 则:表达式! b1 && b2 ||b2的值为( false )。 3.已知:double x=8.5,y=5.8; 则:表达式x++>y--值为( true )。

4.已知:int a[ ]={2,4,6,8}; 则:表达式(a[0]+=a[1])+ ++a[2]值为( 13 )。

5.执行int x, a = 2, b = 3, c = 4; x = ++a + b++ + c++; 结果是( x=10,a=3,b=4,c=5 )。 6.Java中的显式类型转换既能(从低类型向高类型转换)也能从高类型向低类型转换,而隐式类型转换只有前者。

7.在Java中,字符串和数组是作为(对象)出现的。 8.执行下列程序代码的输出结果是( 10,11,11 )。

int a = 10; int i, j; i = ++a; j = a--; System.out.printf(\

9.执行完boolean x=false; boolean y=true; boolean z=(x&&y)&&(!y) ; int f=z==false?1:2; 这段代码后,z与f的值分别是( false )和( 1 )。 二、选择题

1.下面哪些标识符在Java语言中是合法的?( AB )

A.persons$ B.TwoUsers C.*point D.instanceof F.end-line 2.下列( D )是合法标识符。

A.2end B.-hello C.=AB D.整型变量 3.已知int i = 2 147 483 647; ++i; 则i的值等于( A )。

A.- 2 147 483 648 B.2 147 483 647 C.2 147 483 648 D.-1 4.若x = 5,y = 8,则表达式x|y的值为( B )。 A.3 B.13 C.0 D.5

Java语言基础 习 题 二

5.若定义有变量float f1,f2 = 8.0F,则下列说法正确的是( B )。

A.变量f1,f2均被初始化为8.0 B.变量f1没有被初始化,f2被初始化为8.0 C.变量f1,f2均未被初始化 D.变量f2没有被初始化,f1被初始化为8.0 6.基本数据类型short的取值范围是( B )。

A.(-256)~ 255 B.(-32 768)~ 32 767 C.(-128)~ 127 D.0~65 535 7.下列( B )是不能通过编译的语句。

A.double d = 545.0; B.char a1 = “c”; C.int i = 321; D.float f1 =45.0f; 8.若定义有short s; byte b; char c; 则表达式s * b + c的类型为( C )。 A.char B.short C.int D.byte 9.下列循环语句的循环次数是( B )。 int i=5;

do { System.out.println(i--);

i--; }while(i!=0);

A.5 B.无限 C.0 D.1

10.下列代码哪几行会出错?( C ) 1) public void modify() { 2) int I, j, k; 3) I = 100;

4) while (I > 0) { 5) j = I * 2;

6) System.out.println(\7) k = k + 1; 8) I--; 9) } 10 }

A.line 4 B.line 6 C.line 7 D.line 8 11.下列关于数组的定义形式,哪些是错误的?( ABC )

A.int[ ]c=new char[10]; B.int[ ][3]=new int[2][ ]; C.int[ ]a; a=new int; D.char b[ ]; b=new char[80]; 12.执行String[] s=new String[10];语句后,哪些结论是正确的?( BC A.s[0] 为 未定义 B.s.length 为10 C.s[9] 为 null D.s[10] 为 \

13.下列关于Java语言的数组描述中,错误的是( D )。 A.数组的长度通常用length表示 B.数组下标从0开始

C.数组元素是按顺序存放在内存的 D.数组在赋初值和赋值时都不判界 14.下面的表达式哪些是正确的? ( ACE ) A.String s=\你好\

B.String s=\你好\C.String s=\你好\D.String s=\你好\

E. String s=null; int i=(s!=null)&&(s.length()>0)?s.length():0; 15.下列代表十六进制整数的是( C )。

A.012345 B.2008 C.0xfa08 D.fb05

16.在switch(expression)语句中,expression的数据型不能是( C )。A.char B.short C.double D.byte

) 17.下列说法正确的是( AC )。

A.表达式“1+2>3”的值是false B.表达式“1+2||3”是非法的表达式 C.表达式“i+j=1”是非法的表达式 D.表达式“1+2>3”的值是true 18.指出正确的表达式( B )。

A.byte=128; B.long l=0xfffL; C.Boolean=null; D.double=0.9239d; 19.public class T18 {

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

public static void main(String a[]) { System.out.println(arr[1]); } }

哪个语句是正确的?( C )

A.编译时将产生错误 B.编译时正确,运行时将产生错误 C.输出零 D.输出空

20.若String s = \则下列哪些表达式返回true?( AB )

A.s.equals(t); B.t.equals(new String(\C.t.equals(c); D.s==t; 21.执行下面的代码段:

switch(m){ case 0: System.out.println(\

case 1: System.out.println(\ case 2:

default: System.out.println(\

}

下列m的哪些值将引起\的输出?( CD ) A.0 B.1 C.2 D.3

22.下列关于“<<”和“>>”的运算,哪些是正确的?( AC ) A.0000 0100 0000 0000 0000 0000 0000 0000<<5 的运行结果是 1000 0000 0000 0000 0000 0000 0000 0000

B.0000 0100 0000 0000 0000 0000 0000 0000<<5的运行结果是 1111 1100 0000 0000 0000 0000 0000 0000

C.1100 0000 0000 0000 0000 0000 0000 0000>>5的运行结果是 1111 1110 0000 0000 0000 0000 0000 0000

D.1100 0000 0000 0000 0000 0000 0000 0000>>5的运行结果是 0000 0110 0000 0000 0000 0000 0000 0000 三、判断题

1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。( × )

2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。( √ ) 3.所有的变量在使用前都必须进行初始化。( × )

4.已知byte i = (byte)127; i = i +1;这两个语句能被成功编译。( √ ) 5.String str=\char chr=str.charAt(9); ( × )

6.char[] chrArray={ 'a', 'b', 'c', 'd', 'e', 'f', 'g'}; char chr=chrArray[6]; ( √ ) 7.int i,j; boolean booleanValue=(i==j); ( × )

8.int intArray[]={0,2,4,6,8}; int length=int Array.length();( × ) 9.String str=\( × )

10.short shortValue=220; byte byteValue=shortValue; ( × ) 11.int[] intArray[60]; ( × )

12.char[] str=\( × )

13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。( √ )

14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。( √ ) 四、分析题

1.分析下面的程序,写出运行结果。 public class Exercises5_1 {

String str = new String(\ char[] ch = { 'L', 'i', 'k', 'e' };

public static void main(String args[]) { Exercises5_1 ex = new Exercises5_1(); ex.change(ex.str, ex.ch); System.out.print(ex.str + \ System.out.print(ex.ch); }

public void change(String str, char ch[]) { str = \ ch[1] = 'u'; } }

运行结果是:( Hi ! Luke ) 2.分析下面的程序,写出运行结果。 public class Exercises5_2 {

public static void main(String[] args) { int n = 1, m, j, i; for (i = 3; i <= 30; i += 2) { m = (int) Math.sqrt((double) i); for (j = 2; j <= m; j++) if ((i % j) == 0) break; if (j >= m + 1) { System.out.print(i + \ if (n % 5 == 0) System.out.print(\ n++; } } } }

运行结果是:( ) 3 5 7 11 13 17 19 23 29

3.分析下面的程序,写出运行结果:

};

public class Exercises5_3 {

public static void main(String args[]) { String str1 = new String();

String str2 = new String(\

char chars[] = { 'a', ' ', 's', 't', 'r', 'i', 'n', 'g' }; String str3 = new String(chars);

String str4 = new String(chars, 2, 6);

byte bytes[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, String str5 = new String(bytes);

StringBuffer strb = new StringBuffer(str3);

System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ }

}

运行结果是:( ) The String str1 is

The String str2 is String 2 The String str3 is a string The String str4 is string The String str5 is 0123456789 The String strb is a string

0x39

五、改错题

1.找出下面代码的错误部分,说明错误类型及原因,并更正。

public int m1 (int number[20]){ number = new int[20]; for(int i=0;i

改正后程序:

public int[] m1(int number[]) { // number = new int[20];

for (int i = 1; i < number.length - 1; i++) number[i] = number[i - 1] + number[i + 1]; return number; }

2.找出下面代码的错误部分,说明错误类型及原因,并更正。

(1) int x = 1;

while (x <= 10); { i++; } 改正后程序:

int x = 1, i = 0; while (x <= 10) { i++; }

(2) switch (n) { case 1: system.out.println(\ case 2: system.out.println(\ break; } 改正后程序:

int n = 1; switch (n) { case 1: System.out.println(\ break; case 2: System.out.println(\ break;

}

六、简答题

1.Java的关键字有哪些?

2.标识符有何用途?Java中定义标识符的规则有哪些?

3.Java定义了哪些基本数据类型?基本数据类型和引用数据类型的特点是什么?字节型和字符型数据有何区别?长度为32位的基本数据类型有哪些?

4.整型常量有哪三种表示形式?浮点型变量有哪两种表示形式?布尔型常量可以转换成其他数据类型吗?

5.在Java 语言中,表示字符串常量和字符常量时应注意哪些问题?

6.在Java转义字符表示中,ASCII码值对应的字符如何表示?Unicode字符集中对应的字符如何表示?

7.什么是表达式语句?什么是空语句?什么是块语句?可以把块语句视为一条语种吗?

8.if语句中,<条件表达式>一定是逻辑型表达式吗? switch语句中,<语句序列>里一定有break语句吗?

9.while循环语句与do-while循环语句有何不同?

10.for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?for-each语句的特点是什么?

11.break语句和continue语句有哪两种形式?

12.创建数组元素为基本数据类型的数组时,系统都会指定默认值吗?布尔型的默认值是什么?

13.在Java中怎样定义和使用一维数组、二维数组? 14.字符串类String 和StringBuffer类有何不同?

15.Java中的数组实际上是一个隐含的“数组类”的对象,而数组名实际上是该对象的一个引用,这种说法对吗?

16.字符数组与字符串有本质的不同,而字符串实际上是String类和StringBuffer类的对象,这种说法对吗?

一、填空题

1.类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。

2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。

3.模型应具有(抽象性)、(可理解性)、(精确性)、(确定性)和廉价性等基本特性。 4.UML定义了(用例图)、(静态图)、(交互图)、行为图和实现图五类模型图。

5.在UML类图中分别用( + )、( # )、( ~ )和( - )表示属性与方法的公有、保护、默认和私有访问控制权限。

6.在UML中,类之间主要有(关联)、(依赖)、(聚集)、(泛化)和实现五种关系。

7.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。

8.在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。

9.数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。

10.对象作方法形参时,方法实参也用对象,实现(引用)调用。 11.( new)是一个特殊的方法,用于创建一个类的实例。

12.对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。 13.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。

14.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。

15.Java使用固定于首行的(package)语句来创建包。

16.在运行时,由java解释器自动引入,而不用import语句引入的包是(java.lang)。 17.发布Java应用程序或类库时,通常可以使用JDK中自带的(JAR)命令打包。 二、简答题

1.名词解释:抽象、对象、类、实例、方法、属性、消息、接口、封装、继承、多态性;模型、UML。 2.简述面向对象的基本思想、主要特征和基本要素。 3.为什么要对类进行封装?封装的原则是什么?

4.类的封装性、继承性和多态性各自的内涵是什么? 5.什么是对象?什么是类?二者有何关系?

6.Java中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么? 7.Java中成员变量定义的一般格式是什么?成员变量有哪些修饰符? 8.Java中成员方法定义的一般格式是什么?成员方法有哪些修饰符? 9.简述构造方法的特点与作用。

10.Java中创建对象的一般格式是什么?如何初始化对象?如何给对象赋值? 11.什么是包?如何创建包?如何引用包?

Java语言面向对象基础 习 题 三

14.Import语句和package语句的功能分别是什么? 三、选择题

1.下面关于封装性的描述中,错误的是( D )。

A.封装体包含属性和行为 B.被封装的某些信息在外不可见

C.封装提高了可重用性 D.封装体中的属性和行为的访问权限相同 2.下面关于类方法的描述,错误的是( B )。

A.说明类方法使用关键字static B.类方法和实例方法一样均占用对象的内存空间 C.类方法能用实例和类名调用 D.类方法只能处理类变量或调用类方法 3.下面关于包的描述中,错误的是( A )。 A.包是若干对象的集合 B.使用package语句创建包 C.使用import语句引入包 D.包分为有名包和无名包两种 4.下述哪些说法是正确的?( BC )

A.用static关键字声明实例变量 B.实例变量是类的成员变量 C.局部变量在方法执行时创建 D.局部变量在使用之前必须初始化 5.下面哪些代码段是正确的Java源程序?( BCD )

A.import java.io.*; B.import java.io.*;

package testpackage; class Person{/* do something... */}

public class Test{/* do something... */} public class Test{/* do something... */}

C.import java.io.*; D.package testpackage;

import java.awt.*; public class Test{/* do something... */} public class Test{/* do something... */} 四、判断题

1.类是一种类型,也是对象的模板。( √ ) 2.类中说明的方法可以定义在类体外。( × ) 3.实例方法中不能引用类变量。( × )

4.创建对象时系统将调用适当的构造方法给对象初始化。( √ )

5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。( √ )

6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。( √ ) 7.对象可作方法参数,对象数组不能作方法参数。( × ) 8.class是定义类的惟一关键字。( √ )

9.Java语言会自动回收内存中的垃圾。( √ ) 五、分析题

分析下面的程序,写出运行结果。 import java.awt.*; import java.applet.*; class MemberVar {

static int sn = 30; final int fn;

final int fk = 40; MemberVar() { fn = ++sn; }

}

public class Exercises5_1 extends Applet { public void paint(Graphics g) { MemberVar obj1 = new MemberVar(); MemberVar obj2 = new MemberVar();

g.drawString(\ g.drawString(\ g.drawString(\ g.drawString(\ } }

运行结果是:( ) obj1.fn=31 obj1.fk=40 obj2.fn=32 obj2.fk=40 六、改错题

1.下面的程序中有若干个语法错误,找出后请改正。 public class MyMainClass{

public static void main( ) {

TheOtherClass obj = new TheOtherClass(\ System.out.println(obj.name+' '+obj.gender+' '+obj.nationality);

}

System.out.println(\}

public class TheOtherClass{

private String name,gender,nationality;

public TheOtherClass(String name,String gender,String nationality) { this.name=name; this.gender=gender; this.nationality=nationality;

} }

改正后程序:

public class MyMainClass {

public static void main(String args[]) {

TheOtherClass obj = new TheOtherClass(\

System.out.println(obj.name + ' ' + obj.gender + ' ' + obj.nationality); System.out.println(\ } }

class TheOtherClass {

public String name, gender, nationality;

public TheOtherClass(String name, String gender, String nationality) {

this.name = name; this.gender = gender;

this.nationality = nationality; } }

2.下面的程序中有若干个语法错误,找出后请改正。 public class Car{ private String carName; public int mileage; private static final int TOP_SPEED=50; abstract void alert(); public static int getTopSpeed(){ return TOP_SPEED;

}

public static void setCarName(){ carName=\}

public static void setMileage(){ mileage=180; } }

改正后程序:

public abstract class Car { private String carName; public int mileage;

private static final int TOP_SPEED = 50; abstract void alert();

public static int getTopSpeed() { return TOP_SPEED; }

public void setCarName() { carName = \ }

public void setMileage() { mileage = 180; } }

一、填空题

1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。

2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。

3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。

Java语言面向对象高级程序设计 习 题 四

4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的 (子类与非子类)的代码访问引用。

5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。

6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。 7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。

8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。

9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。

10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。

11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。

12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。

13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。

14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。

15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。

16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。 17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。

18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。 19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。

20.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。

21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。

22.一个接口可以通过关键字extends来继承(多个)其他接口。

23.接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。

24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。 25.静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法( );)。 26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。

27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。 二、简答题

1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?

2.如何创建一个类的子类? 3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?

4.什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?

5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么?

6.什么是成员变量的继承?什么是成员变量的覆盖?

7.举例说明什么是上转型对象,上转型对象的操作原则是什么? 8.简述接口定义的一般格式。

9.什么是接口?如何定义接口?接口与类有何区别?

10.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法? 11.比较接口与抽象类的异同。

12.什么是抽象类?什么是抽象方法?各自有什么特点? 13.什么是最终类?什么是最终变量?什么是最终方法? 三、选择题

1.下面关于类的继承性的描述中,错误的是( C )。 A.继承是在已有的基础上生成新类的一种方法 B.Java语言要求一个子类只有一个父类 C.父类中成员的访问权限在子类中将被改变

D.子类继承父类的所有成员,但不包括私有的成员方法

2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是( B )。

A.默认 B.protected C.private D.public 3.在类的修饰符中,规定只能被同一包类所使用的修饰符是( B )。 A.public B.默认 C.final D.abstract 4.下列关于子类继承父类的成员描述中,错误的是( C )。

A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。 B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。 C.子类中继承父类中的所有成员都可以访问。

D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。

5.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?( AB )

A.public class MyClass extends Object B.public class MyClass C.private class MyClass extends Object D.class MyClass extends Object 6.下列关于继承性的描述中,错误的是( C )。

A.一个类可以同时生成多个子类 B.子类继承了父类中除私有的成员以外的其他成员 C.Java支持单重继承和多重继承 D.Java通过接口可使子类使用多个父类的成员 7.下列关于抽象类的描述中,错误的是( C )。

A.抽象类是用修饰符abstract说明的 B.抽象类是不可以定义对象的 C.抽象类是不可以有构造方法的 D.抽象类通常要有它的子类 8.设有如下类的定义: public class parent { int change() {} }

class Child extends Parent { }

则,下面哪些方法可加入Child类中?( AB )

A.public int change(){ } B.int chang(int i){ }

C.private int change(){ } D.abstract int chang(){ } 9.下列关于构造方法的叙述中,错误的是( D )。

A.构造方法名与类名必须相同 B.构造方法没有返回值,且不用void声明

C.构造方法只能通过new自动调用 D.构造方法不可以重载,但可以继承 10.下面叙述中,错误的是( C )。

A.子类继承父类 B.子类能替代父类 C.父类包含子类 D.父类不能替代子类 11.下列对多态性的描述中,错误的是( B )。

A.Java语言允许方法重载与方法覆盖 B.Java语言允许运算符重载

C.Java语言允许变量覆盖 D.多态性提高了程序的抽象性和简洁性 12.下面关于接口的描述中,错误的是( A )。

A.一个类只允许继承一个接口 B.定义接口使用的关键字是interface C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现 D.接口实际上是由常量和抽象方法构成的特殊类

13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?( C ) A.ArrayList myList=new Object(); B.ArrayList myList=new List(); C.List myList=new ArrayList(); D.List myList=new List();

14.下列哪些方法与方法public void add(int a){}为合理的重载方法?( ACD ) A.public void add(char a) B.public int add(int a)

C.public void add(int a,int b) D.public void add(float a)

15.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是( C )。 A.public int MAX_LENGTH=100; B.final public int MAX_LENGTH=100; C.public final int MAX_LENGTH=100; D.final int MAX_LENGTH=100; 四、判断题

1.Java语言中,构造方法是不可以继承的。( √ )

2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。( × ) 3.抽象方法是一种只有说明而无具体实现的方法。( √ ) 4.Java语言中,所创建的子类都应有一个父类。( √ )

5.调用this 或super构造方法的语句必须放在第一条语句。( √ ) 6.一个类可以实现多个接口,接口可以实现“多重继承”。 ( √ ) 7.实现接口的类不能是抽象类。( √ )

8.使用构造方法只能给实例成员变量赋初值。( √ )

9.Java 语言不允许同时继承一个类并实现一个接口。( × ) 五、分析题

1.分析下面的程序,写出运行结果。 public class Exercises6_1 extends TT{ public void main(String args[]){

Exercises6_1 t = new Exercises6_1(\ }

public Exercises6_1(String s){ super(s);

System.out.println(\ }

public Exercises6_1(){ this(\ } }

class TT{

public TT(){

System.out.println(\ }

public TT(String s){ this();

System.out.println(\ } }

运行结果是:( ) What a pleasure! I am Tom

How do you do?

2.分析下面的程序,写出运行结果。 public class Exercises6_2 { private static int count; private String name; public class Student { private int count; private String name; public void Output(int count) { count++; this.count++; Exercises6_2.count++; Exercises6_2.this.count++; System.out.println(count + \this.count + \ + Exercises6_2.count + \this.count++);

} }

public Student aStu() { return new Student(); }

public static void main(String args[]) { Exercises6_2 g3 = new Exercises6_2(); g3.count = 10; Exercises6_2.Student s1 = g3.aStu(); s1.Output(5); } }

运行结果是:( ) 6 1 12 12

3.分析下面的程序,写出运行结果。 class Exercises6_3 { class Dog {

private String name; private int age; public int step; Dog(String s, int a) { name = s; age = a; step = 0; } public void run(Dog fast) { fast.step++; } }

public static void main(String args[]) { Exercises6_3 a = new Exercises6_3(); Dog d = a.new Dog(\ d.step = 29; d.run(d); System.out.println(\ }

}

运行结果是:( ) 30

4.分析下面的程序,写出运行结果。 class Aclass { void go() { System.out.println(\public class Bclass extends Aclass {

void go() { System.out.println(\public static void main(String args[]) { Aclass a = new Aclass(); Aclass a1 = new Bclass(); a.go(); a1.go(); } }

运行结果是:( ) Aclass Bclass 六、改错题

1.找出下面代码的错误部分,说明错误类型及原因,并更正之。 public class Car {

private String carName; public int mileage;

private static final int TOP_SPEED = 200; abstract void alert();

public static int getTopSpeed() {

return TOP_SPEED; }

public static void setCarName() { carName = \奥迪\ }

public static void setMileage() { mileage = 180; } }

错误:因为含有抽象方法的类,必须是抽象类;静态方法只能访问静态成员。 更正:

public abstract class Car { private String carName; public int mileage;

private static final int TOP_SPEED = 200; abstract void alert();

public static int getTopSpeed() { return TOP_SPEED; }

public void setCarName() { carName = \奥迪\ }

public void setMileage() { mileage = 180; } }

2.下列代码不能编译的原因是:( )。 class A {

private int x;

public static void main(String args[]) { new B(); } class B { B() {System.out.println(x); } } }

因为在A类的main方法中,还没有A的实例就要试图生成内部类的实例。 更正如下:

public class A { private int x;

public static void main(String args[]) { A a = new A(); a.new B(); }

class B { B() { System.out.println(x);

} } }

一、简答题

1.计算调用下列方法的结果。

Math.sqrt(4); // 2.0 Math.pow(4, 3); // 64.0 Math.max(2, Math.min(3, 4)); // 3

2.下列程序中构造了一个set并且调用其方法add(),输出结果是( 2 )。 import java.util.*; public class T1_2 {

public int hashCode() { return 1; }

public boolean equals(Object b) { return true; }

public static void main(String args[]) { Set set = new HashSet(); set.add(new T1_2()); set.add(new String(\ set.add(new T1_2()); System.out.println(set.size()); } }

3.Collection有哪几种主要接口? (Collection、List、Map、Set) 4.基本的集合接口有哪些?

5.映射、集合和列表的含义是什么? 6.HashMap类和TreeMap类有何区别? 7.HashSet类和Treeset类有何区别?

8.ArrayList类和LinkedList类有何区别? 二、选择题

1.可实现有序对象的操作有哪些?( CD )

A.HashMap B.HashSet C.TreeMap D.LinkedList 2.迭代器接口(Iterator)所定义的方法是( ABC )。 A.hasNext() B.next()

C.remove() D.nextElement()

3.下列方法属于java.lang.Math类的有(方法名相同即可)( ABCD )。 A.random() B.abs() C.sqrt() D.pow() 4.指出正确的表达式有( AB )。

A.double a=2.0; B.Double a=new Double(2.0);

Java标准类库 习 题 五

C.byte A= 350; D.Byte a = 120; 5.System类在哪个包中?( B )

A.java.awt B.java.lang C.java.util D.java.io 6.关于Float,下列说法正确的是( ACD )。

A.Float在java.lang包中 B.Float a=1.0是正确的赋值方法

C.Float是一个类 D.Float a= new Float(1.0)是正确的赋值方法 三、判断题

1.Map接口是自Collection接口继承而来。( × )

2.集合Set是通过键-值对的方式来存储对象的。( × )

3.Integer i = (Integer.valueOf(\( √ )

4.String s = (Double.valueOf(\( √ ) 5.Integer I = Integer.parseInt(\( √ ) 6.Arrays类主要对数组进行操作。( √ ) 7.在集合中元素类型必须是相同的。( √ ) 8.集合中可以包含相同的对象。( × )

9.枚举接口定义了具有删除功能的方法。( × )

一、填空题

1.Swing的事件处理机制包括(事件源)、事件和事件监听者。

2.Java事件处理包括建立事件源、(建立事件监听器)和将事件源注册到监听器。

3.在Swing中,可以根据不同用户的习惯,设置不同的界面显示风格,Swing提供了三种显示风格,分别是(Metal风格)风格、( Motif风格)风格和(Windows风格)风格。

4.Swing的顶层容器有(JFrame)、JApplet、JWindow和JDialog。

5.(根面板)由一个玻璃面板、一个内容面板和一个可选择的菜单条组成。 二、简答题

1.试述AWT的事件处理机制。

2.什么是Swing?它比AWT有什么优点?使用上有何区别?

3.布局管理器的作用是什么?在JDK中哪些常用布局管理器?各有何特点? 4.什么是容器组件?组件与容器有何区别? 三、选择题

1.Swing组件必须添加到Swing顶层容器相关的( B )。

A.分隔板上 B.内容面板上 C.选项板上 D.复选框内 2.Panel和Applet的默认布局管理器是( A )。

A.FlowLayout B.CardLayout C.BorderLayout D.GridLayout 3.容器类java.awt.container的父类是( C )。

A.java.awt.Frame B.java.awt.Panel C.java.awt.Componet D.java.awt.Windows 4.哪些布局管理器使用的是组件的最佳尺寸?( AE )

A.FlowLayout B.BorderLayout C.GridLayout D.CardLayout E.GridBagLayout 5.关于AWT和Swing说法正确的是( CD )。

A.Swing是AWT的子类 B.AWT在不同操作系统中显示相同的风格 C.AWT和Swing都支持事件模型 D.Swing在不同的操作系统中显示相同的风格 6.关于使用Swing的基本规则,下列说法正确的是( D )。

Java GUI程序设计 习 题 六

A.Swing组件可直接添加到顶级容器中 B.要尽量使用非Swing的重要级组件 C.Swing的Jbutton不能直接放到Frame上 D.以上说法都对

7.在Java编程中,Swing包中的组件处理事件时,下面( A )是正确的。 A.Swing包中的组件也是采用事件的委托处理模型来处理事件的

B.Swing包中的组件产生的事件类型,也都带有一个J字母,如JMouseEvent C.Swing包中的组件也可以采用事件的传递处理机制

D.Swing包中的组件所对应的事件适配器也是带有J字母的,如JMouseAdapter 四、判断题

1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( × ) 2.一个容器中可以混合使用多种布局策略。( × )

3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。( √ )

4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。( √ ) 5.在使用BorderLayout时,最多可以放入五个组件。( √ )

6.每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( × ) 7.Java中,并非每个事件类都只对应一个事件。( √ )

一、填空题

1.Applet生命周期方法有init()、( start() )、stop()和destroy()。 2.与显示相关的Applet方法有(paint() )、repaint()和update()。 二、简答题

1.init()方法在Java Applet中起什么作用? 2.Java Applet中的主要方法是哪几个? 3.Java Applet生命周期包括哪几个阶段? 4.Java Applet在安全性方面进行了哪些限制?

5.Java Applet是怎样嵌入HTML文件中的?在HTML文件中至少有哪些说明? 6.Java Applet和Application有何区别?是否可以将Java Applet改写成Java Application程序? 三、选择题

1.下列操作中,不属于Applet安全限制的是( A )。 A.与同一个页面中的Applet通信 B.加载本地库

C.运行本地可执行程序 D.读写本地文件系统

2.为了向一个Applet传递参数,可以在HTML文件的APPLET标志中使用PARAM选项。在Applet程序中获取参数时,应使用的方法是( B )。

A.getDocumentBase() B.getParameter( ) C.getCodeBase D.getImage() 3.下面关于Applet的说法正确的是( C )。

A.Applet能访问本地文件 B.Applet也需要main方法 C.Applet必须继承自java.awt.Applet D.Applet程序不需要编译 4.编译Java Applet源程序文件产生的字节码文件的扩展名为( B )。 A.java B. class C. html D. exe

5.在Java Applet程序用户自定义的Applet子类中,常常重载( D )方法在Applet的界面中显示文字、图形和其他界面元素。

A.start( ) B.stop( ) C.init( ) D.paint( )

Java Applet及其应用 习 题 七

6.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上( D )语句。

A.import java.awt.* ; B.import java.applet.* ; C.import java.io.* ; D.import java.awt.event.* ; 7.在浏览器中执行Applet 程序四个方法里最先执行的是( A )。 A.init() B.start() C.destroy() D.stop() 四、判断题

1.Applet的执行离不开一定的HTML文件。( √ )

2.Applet可以运行本地机器上的可执行程序( × )

3.Java Applet不能够存取客户机磁盘上的文件。( √ ) 4.Applet可以运行在浏览器中。( √ )

5.Applet的两个方法getCodeBase( )和getDocumentBase( )的返回值都是URL类的对象,且二者返回的都是相同的URL地址。( × )

6.Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。( √ ) 7.Java Applet是由独立的解释器程序来运行的。( × ) 8.Java Applet只能在图形界面下工作。( √ )

一、简答题

1.什么是异常?简述Java的异常处理机制。

2.系统定义的异常与用户自定义的异常有何不同?如何使用这两类异常?

3.在Java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用?try-catch-finally语句如何使用?

4.说明throws与throw的作用。 二、选择题

1.请问所有的异常类皆继承哪一个类?( A ) A.java.lang.Throwable B.java.lang.Exception C.java.lang.Error D.java.io.Exception 2.哪个关键字可以抛出异常?( B )

A.transient B.throw C.finally D.catch

3.对于已经被定义过可能抛出异常的语句,在编程时( A )。 A.必须使用try/catch语句处理异常,或用throw将其抛出。 B.如果程序错误,必须使用 try/catch语句处理异常。 C.可以置之不理。

D.只能使用try/catch语句处理。

4.下面程序段的执行结果是什么?( B ) public class Foo{

public static void main(String[] args){ try{

return;}

finally{System.out.println(\ } } }

Java异常处理技术 习 题 八

A.编译能通过,但运行时会出现一个例外。 B.程序正常运行,并输出 \。

C.程序正常运行,但不输出任何结果。 D.因为没有catch语句块,所以不能通过编译。 5.下面是一些异常类的层次关系: java.lang.Exception

java.lang.RuntimeException

java.lang.IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException

java.lang.StringIndexOutOfBoundsException 假设有一个方法X,能够抛出两个异常,Array Index和String Index异常,假定方法X中没有try-catch语句处理这些异常,下面哪个答案是正确的?( A B )

A.方法X 应该声明抛弃ArrayIndexOutOfBoundsException和StringIndexOutOfBounds- Exception。 B.如果调用X的方法捕获IndexOutOfBoundsException,则ArrayIndexOutOfBounds- Exception和StringIndexOutOfBoundsException都可以被捕获。

C.如果方法X声明抛弃IndexOutOfBoundsException,则调用X的方法必须用try-catch语句捕获。 D.方法X不能声明抛弃异常。

6.下面的方法是一个不完整的方法,其中的方法unsafe()会抛出一个IOException,那么在方法的①处应加入哪条语句,才能使这个不完整的方法成为一个完整的方法?( DE )

① ____________________________

② { if(unsafe()) {//do something?} ③ else if(safe()) {//do the other?} ④ }

A.public IOException methodName() B.public void methodName() throw IOException C.public void methodName() D.public void methodName() throws IOException E.public void methodName() throws Exception

7.如果下列的方法能够正常运行,在控制台上将显示什么?( ACD ) public void example( ){ try{

unsafe();

System.out.println(\ }

catch(SafeException e)

{System.out.println(\ finally{System.out.println(\ System.out.println(\ } A.Test 1 B. Test 2 C.Test 3 D. Test 4 三、判断题

1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。( √ )

2.使用try-catch-finally语句只能捕获一个异常。( × ) 3.try-catch语句不可以嵌套使用。( × )

4.Error类所定义的异常是无法捕获的。( √ )

5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。( √ ) 6.用户自定义异常类是通过继承Throwable类来创建的。( × )

7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ ) 四、程序填空

public class ServerTimedOutException extends Exception { private int port;

public ServerTimedOutException(String message, int port) { super(message); this.port = port; }

public int getPort() { return port; } }

class Client {// 在下行横线处填上声明抛弃ServerTimedOutException例外的语句 public void connectMe(String serverName) ______________________ { int success;

int portToConnect = 80;

success = open(serverName, portToConnect); if (success == -1) { // 在下行横线处填上抛出ServerTimedOutException例外的语句 _______________________________________ } }

private int open(String serverName, int portToConnect) { return 0; } }

Java多线程技术习 题 九

一、简答题

1.线程与进程有什么关系?

2.线程有几种状态,引起线程中断的主要原因有哪些?

3.一个线程执行完run()方法后,进入了什么状态?该线程还能再调用start()方法吗? 4.建立线程的方法有哪几种?Runnable接口在线程创建中的作用?

5.Runnable接口中包括哪些抽象方法?Thread类有哪些主要的成员变量和方法? 6.线程在什么样的状态时,调用isAlive()方法返回的值是false? 7.在多线程中引入同步机制的原因是什么?

8.在什么方法中可以使用wait()、notify()及notifyAll()方法? 9.线程调用interrupt()的作用是什么?线程什么时候会发生死锁? 二、选择题

1.运行下列程序,会产生什么结果?( A )

1) public class Exercises3_1 extends Thread implements runable { 2) public void run() {

3) System.out.println(\4) }

5) public static void main(String args[]) { 6) Thread t = new Thread(new Exercises3_1()); 7) t.start(); 8) } 9) }

A.第一行会产生编译错误 B.第六行会产生编译错误 C.第六行会产生运行错误 D.程序会运行和启动

2.线程在生命周期中要经历五种状态,若线程当前是新建状态,则它可以到达的下一个状态是( B )。

A.运行状态 B.可运行状态 C.阻塞状态 D.终止状态 3.下列关于Java多线程并发控制机制的叙述中,错误的是( D )。

A.Java中没有提供检测与避免死锁的专门机制,但应用程序可以采用某些策略防止死锁的发生 B.共享数据的访问权限都必须定义为private

C.Java中对共享数据操作的并发控制是采用加锁技术 D.线程之间的交互,提倡采用suspend()/resume()方法 4.哪个关键字可以对对象加互斥锁?( C )

A.transient B.serialize C.synchronized D.static 5.下面哪些方法可用于创建一个可运行的多线程类?( AB )

A.public class T implements Runable { public void run(){ ?} } B.public class T extends Thread { public void run(){ ?} } C.public class T implements Thread { public void run(){?} } D.public class T implements Thread { public int run(){?.} } E.public class T implements Runable { protected void run(){?} } 6.下面哪些方法可以在任何时候被任何线程调用?( ABC )

A.sleep() B.yield() C.synchronized(this) D.notify() E.wait() F.notifyAll() 7.下列哪些情况可以终止当前线程的运行?( BCD )

A.当创建一个新线程时 B.当该线程调用sleep()方法时

C.抛出一个异常时 D.当一个优先级高的线程进入就绪状态时 三、判断题

1.一个Java多线程的程序不论在什么计算机上运行,其结果始终是一样的。( × )

2.Java线程有五种不同的状态,这五种状态中的任何两种状态之间都可以相互转换。( × ) 3.所谓线程同步就是若干个线程都需要使用同一个synchronized修饰的方法。( √ )

4.使用Thread子类创建线程的优点是可以在子类中增加新的成员变量,使线程具有某种属性,也可以在子类中新增加方法,使线程具有某种功能。但是,Java不支持多继承,Thread类的子类不能再扩展其他的类。( √ )

5.Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。每个Java线程的优先级都在常数1和10之间,即Thread.MIN_PRIORITY和Thread.MAX_PRIORITY之间。如果没有明确地设置线程的优先级别,每个线程的优先级都为常数8。( × )

6.当线程类所定义的run( )方法执行完毕,线程的运行就会终止。( √ ) 7.线程的启动是通过引用其start()方法而实现的。( √ )

一、简答题

1.什么叫流?简述流的分类。

Java输入输出技术 习 题 十

2.能否将一个对象写入一个随机访问文件?

3.BufferedReader流能直接指向一个文件对象吗?为什么? 4.字节流和字符流之间有什么区别?

5.简述可以用哪几种方法对文件进行读写。

6.从字节流到字符流的转化过程中,有哪些注意事项? 二、选择题

1.实现字符流的写操作类是( B ),实现字符流的读操作类是( A )。 A.FileReader B.Writer C.FileInputStream D.FileOutputStream

2.要从“file.dat”文件中读出第10个字节到变量c中,下列哪个方法适合? ( C ) A.FileInputStream in=new FileInputStream(\

B.RandomAccessFile in=new RandomAccessFile(\();

C.FileInputStream in=new FileInputStream(\D.FileInputStream in=new FileInputStream(\3.构造BufferedInputStream的合适参数是哪些?( AC )

A.BufferedInputStream B.BufferedOutputStream C.FileInputStream D.FileOuterStream E.File

4.在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( C )语句。

A.import java.awt.* ; B.import java.applet.Applet ; C.import java.io.* ; D.import java.awt.Graphics ; 5.下列流中哪个不属于字符流?( D )

A.InputStreamReader B.BufferedReader C.FilterReader D.FileInputStream 6.字符流与字节流的区别在于( D )。

A.前者带有缓冲,后者没有 B.前者是块读写,后者是字节读写 C.二者没有区别,可以互换使用 D.每次读写的字节数不同 三、判断题

1.文件缓冲流的作用是提高文件的读/写效率。( √ ) 2.通过File类可对文件属性进行修改。( √ ) 3.IOException必须被捕获或抛出。( √ )

4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出System.err。( √ )

5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。( √ ) 6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。( √ )

一、填空题

1.JDBC的基本层次结构由(Java程序)、( JDBC API)、(JDBC驱动程序管理器)、(驱动程序)和数据库五部分组成。

2.根据访问数据库的技术不同,JDBC驱动程序相应地分为(JDBC-ODBC Bridge)、(JDBC-Native API Bridge)、( JDBC-Middleware)和(Pure JDBC Driver)四种类型。

3.JDBC API所包含的接口和类非常多,都定义在(java.sql)包和(javax.sql)包中。

JDBC与数据库访问技术 习 题 十 一

4.使用(Class.forName( ))方法加载和注册驱动程序后,由(DriverManager)类负责管理并跟踪JDBC驱动程序,在数据库和相应驱动程序之间建立连接。

5.(java.spl.Connection)接口负责建立与指定数据库的连接。

6.(PreparedStatement)接口的对象可以代表一个预编译的SOL语句,它是(Statement)接口的子接口。

7.(ResultSet)接口表示从数据库中返回的结果集。 二、程序填空

下面的程序采用JDBC方式,在MS SQL Server数据库管理系统的DBStudent数据库中,对学生表tblstudent的学号为\和 \的学生的成绩进行修改,并将修改后的结果在屏幕输出,请完成程序编写。

package comsoft.db.jdbc.mssqlserver; import java.sql.*;

public class UpdateRecord {

public static void main(String[] args) {

String JDBCDriver = \ // 声明JDBC驱动程序类型

String conURL = \

\定义JDBC的URL对象 String[] sno = { \ int[] score = { 100, 99}; try {

(1)Class.forName(JDBCDriver) (1) ; }

catch (ClassNotFoundException e) {

System.out.println(\ } try {

(2)DriverManager.getConnection

Connection con = (2) (conURL); // 修改数据库中数据表的内容 (3)con.prepareStatement

PreparedStatement psmt = (3) (

\ int i = 0, idlen = sno.length; do {

psmt.setInt(1, score[i]); psmt.setString(2, sno[i]); (4)psmt.executeUpdate()

if ( (4) == 1) {

System.out.println(\修改数据表:tblstudent中学号为 \的记录成功!\

}

else {

System.out.println(\错误=数据表:tblstudent中没有学号为 \的记录!\ }

++i; }

while (i < sno.length); psmt.close();

// 查询数据库并把数据表的内容输出到屏幕上 Statement smt = con.createStatement();

ResultSet rset = smt.executeQuery(\ while (rset.next()) {

System.out.println(rset.getString(\ \ }

smt.close(); con.close(); }

catch (SQLException e) {

System.out.println(\ } } }

问答题 第1章

1.Java语言的特点?

答:简单性、面向对象、分布式处理、健壮性、结构中立、安全性、可移植性、解释性、高性能、多线程、动态

2.Java程序的开发步骤 答:

1.编写源文件。扩展名必须是.java。

2.编译Java源程序。使用Java编译器(javac.exe)编译源文件,得到字节码文件。

3. 运行Java程序。使用Java SE平台中的Java解释器(java.exe)来解释执行字节码文件。

3.Java源程序的组成? 答

1)package语句 2)import语句 3)类(class) 4)方法 5)语句

4.如果JDK的安装目录为D:\\jdk,应当怎么设置path和classpath的值? 答:

设置环境变量Path的值为D:\\jdk\\bin;

设置环境变量ClassPath的值为D:\\jdk\\lib\\dt.jar; D:\\jdk\\lib\\tools.jar;

第2章

5.举例说明类声明的格式?

答:对于Circle类的形式包括类声明和类体 。

Circle类的类体的内容由两部分构:一部分是变量的声明,称做域变量或成员变量,用来刻画圆之属性。另一部分是方法的定义(在C语言中称做函数),用来刻画功能。

6.简答用类创建对象的步骤? 答:

声明对象

为对象分配(成员)变量

7.当源文件有多个类时,请说明源文件的命名规则? 答:

Java允许在一个Java源文件中编写多个类,但其中的多个类至多只能有一个类使用public修饰。如果源文件中有多个类,但没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了;如果有一个类是public类,那么源文件的名字必须与这个类的名字安全相同,扩展名是java。

8.Java代码块的写法有哪两种风格?当代码量较大时应当采用哪种编程风格? 答:

(1)Allmans风格

Allmans风格也称“独行”风格,即左、右大括号各自独占一行。 (2) Kernighan风格

Kernighan风格也称“行尾”风格,即左大括号在上一行的行尾,而右大括号独占一行 。

当代码量较大时不适合使用“独行”风格,因为该风格将导致代码的左半部分出现大量的左、右大括号,导致代码清晰度下降,这时应当使用“行尾”风格。

第三章

9.什么是标识符?Java关于标识符的语法规则有哪些?

答:用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。简单地说,标识符就是一个名字。Java关于标识符的语法规则如下: (1)标识符可以由字母、数字、下划线“_”或$组成;

(2)标识符必须以字母、下划线“_”或$开头,随后可跟数字;

(3)标识符是大小写区别对待的。例如,Class和class代表不同的标识符; (4)在自定义标识符时,应该使其能反映它所表示的变量、对象或类的意义。

10.Java的基本数据类型是什么?

Java语言有8种基本数据类型,分别是:boolean、byte、short、int、long、float、double、char。 这8种基本数据类型习惯上可分为以下四大类型:

逻辑类型:boolean

整数类型:byte、short、int、long 字符类型:char

浮点类型:float、double

第四章 运算符和表达式

11.Java提供了哪些运算符?

答:Java提供了丰富的运算符,具体有:

算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、instanceof运算符

12.Java里的语句可分为哪几类? 答:

1.方法调用语句

2.表达式语句:表达式尾加上分号。

3.复合语句:可以用{ }把一些语句括起来构成复合语句。 4.空语句:一个分号也是一条语句,称做空语句。

5.控制语句:控制语句分为条件分支语句、开关语句和循环语句。 6.package语句和 import语句:它们和类、对象有关。

13.条件分支语句按语法格式可细分为3种形式,请说明这3种形式的语法格式? 答:

(1)if语句

if 语句的语法格式:

if(表达式){ 若干语句 }

(2)if-else语句

if-else 语句的语法格式:

if(表达式) {

若干语句 } else { 若干语句 }

(3)if-else if -else 语句

if-else if-else语句的语法格式:

if(表达式) { 若干语句 }

else if(表达式) { 若干语句 } ? ? else { 若干语句 }

14.试说明Switch语句的格式是如何定义的?

答:switch 语句是单条件多分支的开关语句,它的一般格式定义如下(其中break语句是可选的):

switch(表达式) {

case 常量值1:

若干个语句

break; case 常量值2:

若干个语句 break; ...

case 常量值n:

若干个语句 break; default:

若干语句

}

15.循环语句有哪几种形式?它们的语法格式是什么样的? 答:

(1)for循环语句

for语句的语法格式:

for (表达式1; 表达式2; 表达式3) { 若干语句 }

(2)while 循环

while语句的语法格式: while (表达式) { 若干语句 }

(3)do-while循环

do-while语句的语法格式: do {

若干语句 } while(表达式);

第五章 类与对象

16.面向对象的特点? 答:封装性 、继承、多态

17.简答实例变量和类变量的区别? 答:

(1)不同对象的实例变量互不相同 (2)所有对象共享类变量 (3)通过类名直接访问类变量

第六章 子类与继承

18.什么是继承,声明一个类的子类的格式如何定义?

答:继承是一种由已有的类创建新类的机制。利用继承,可以先编写一个共有属性的一般类,根据该一般类再编写具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。 由继承而得到的类称为子类,被继承的类称为父类(超类)。 声明一个类的子类的格式如下: class 子类名 extends 父类名 {

? }

19.简答方法重写的语法规则?

答:如果子类可以继承父类的某个实例方法,那么子类就有权利重写这个方法。子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同。

第七章

20.什么叫接口的回调? 答:

接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类重写的接口方法。实际上,当接口变量调用被类重写的接口方法时,就是通知相应的对象调用这个方法。

第八章

21.什么是异常,Java中如何处理异常? 答:

所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。

Java使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try部分,将发生异常后的处理放在catch部分。

第九章

22.String 类的常用方法有哪些? 答:

(1)public int length():获取一个字符串的长度

(2)public boolean equals(String s):比较当前字符串对象的实体是否与参数s指定的字符串的实体相同

(3)public boolean startsWith/ endsWith (String s) :判断当前字符串对象的前缀/后缀是否参数s指定的字符串

(4)public int compareTo(String s):按字典序与参数s指定的字符串比较大小

(5)public boolean contains(String s):判断当前字符串对象是否含有参数指定的字符串s

(6)public int indexOf (String s):从当前字符串的头开始检索字符串s,并返回首次出现s的位置 (7)public String substring(int startpoint):获得一个当前字符串的子串 其相关方法:substring(int start ,int end)

(8)public String trim() :得到一个s去掉前后空格后的字符串对象。

23.StringBuffer类的常用方法有有哪些? 答:

(1)append()

(2)char charAt(int n)

(3)StringBuffer inert(int index,String str) (4)StringBuffer reverse( )

(5)StringBuffer delete(int startindex, int endindex)

(6)StringBuffer replace(int startindex, int endindex,String str)

第十章 输入与输出流

24.FileInputStream流的read()方法和FileReader流的read()方法有何不同? 答:

FileInputStream流的read()方法以字节为单位读文件 FileReader流的read()方法以字符为基本单位处理数据

第十一章 组件及事件处理

25.常用的组件有哪些? 答:

(1)文本框:由JComponent的子类JTextField创建文本框。 (2)文本区:由JComponent的子类JTexArea创建文本区。 (3)按钮:由JComponent的子类JButton类用来创建按钮。 (4)标签:由JComponent的子类JLabel类用来创建标签。

(5)选择框:由JComponent的子类JCheckBox类用来创建选择框。

(6)单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框。 (7)下拉列表:由JComponent的子类JComboBox类用来创建下拉列表。 (8)密码框:由JComponent的子类JPasswordField创建密码框。

26.常用的容器有哪些? 答:

(1)JPanel 面板:使用JPanel创建面板,再向这个面板添加组件,然后把这个面板添加到其它容器中。 (2)滚动窗格JScrollPane:可以将文本区放到一个滚动窗格中。 (3)拆分窗格JSplitPane:窗格有两种类型:水平拆分和垂直拆分 (4)JLayeredPane分层窗格:分层窗格使用

27.常用的布局有哪些? 答:

FlowLayout布局 BorderLayout布局 CardLayout 布局 GridLayout布局 null布局

28.画图表述事件的处理模式? 答:

29.对话框有哪几类?

答:消息对话、输入对话、确认对话、颜色对话、文件对话、自定义对话

第十二章 Java多线程机制

30.简答线程与进程的区别?

答:进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。

线程是比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程。

线程间可以共享进程中的某些内存单元(包括代码与数据),线程的中断与恢复可以更加节省系统的开销。

31.线程的生命周期要经历哪些状态? 答:新建、运行、中断、死亡

第十三章 Java网络编程

32.如何读取URL中的资源? 答:URL对象调用 InputStream openStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入到客户端。

33.什么叫socket?怎样建立socket连接? 答:

IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号被规定为一个16位的0~65535之间的整数。

当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号与IP地址的组合得出一个网络套接字)。 套接字连接示意图如下:

第十四章 JDBC数据库操作

34.简答使用JDBC─ODBC桥接器连接数据库的3个步骤? 答:

(1)建立JDBC-ODBC桥接器 (2)创建ODBC数据源

(3)和ODBC数据源建立连接

35.设置数据源的主要步骤有哪些? 答:

(1)创建、修改或删除数据源

选择“控制面板”→“管理工具”→“ODBC数据源”(某些window/xp系统,需选择“控制面板”→“性能和维护”→“管理工具”→“ODBC数据源”)。 (2)为数据源选择驱动程序

因为要访问Access数据库,选择Microsoft Acess Driver(*.mdb)。 (3)数据源名称及对应数据库的所在位置

在名称栏里为数据源起一个自己喜欢的名字,这里我们起的名字是star。这个数据源就是指某个数据库。在“数据库选择”栏中选择一个数据库

程序设计习题:

1. 写一程序,列出当前目录(应用程序所在的目录)下扩展名为JAVA文件的名字。

2. 写一程序,用字符串的相关方法统计出“Which day can we make some jokes about others”中单词的个

数。

3. 写一程序,运行时窗口有一按钮,点击后在屏幕输出\并能实现窗口的关闭。 4. 使用文件字节输入流读取任意文件,并将文件的内容显示在屏幕上

5. 写一程序,用字符串的相关函数将字符串“Which day can we make some jokes about others”倒序输出。 6. 写一程序,运行时有一文本框,在文本框中输入字符串并按回车,可在命令窗口中显示字符串的长度。 7. 将6个int型整数写到一个文件,然后按相反的顺序读出这些数据。

8. 写一程序,将字符串“Which day can we make some jokes about others”按字典序输出。

9. 写一程序,运行时窗口有一按钮,点击前按钮是“press”,点击后按钮是“I have been pressed”,并

能实现窗口的关闭。

10. 写一程序,实现对磁盘任意文本文件的复制。 11. 在程序中定义一个字符串“I love Java”,用循环将此字符串反转输出。 12. 写一程序,访问“http://www.yahoo.com”,读取此网址的服务器的资源。 13. 写一程序,输出全部的大写英文字母

14. 写一程序,计算并输出“1+2+……..+2010”的结果

15. 求100~200之间的所有素数,要求用Java面向对象方法。

16. 17. 18. 19. 20.

将三个已知的整型数按降序排序输出。

以数据35、22、51、10、60、40为例,利用冒泡排序法按升序排列,写出排序过程。 用迭代算法求解:20+21+22+…….+263并求出263的值

使用基于字节的文件输入/输出流,将一个文件复制到另一个文件中。

设计一个Java程序,自定义异常类,从命令行(键盘)输入一个字符串,如果字符串值为“XYZ”,则抛出一个XYZ异常信息,如果从命令行输入ABC,则没有抛出信息。

联系客服:779662525#qq.com(#替换为@)