2023年6月20日发(作者:)

期终考试试卷(A)

考试课程:java语言程序设计 考试时间:120分钟

题号 一 二 三 四 五 总分

得分

得分 评卷人

一、单项选择题(每题3分,共30分)

1、下述字符组合不能..作为Java程序标识符的是( D )

A、Aa12 B、$x C、y2z D、5x

、以下程序代码的输出的结果是( A )

int x=53;

n(1.0+x/2);

A、27.0 B、27.5 C、1.026 D、1.026.5

3、下列特点不属于java的是( B )

A、多线程 B、多继承 C、跨平台 D、动态

4、下列说法正确的是( D )

A、Set 集合中的元素可以重复 B、Map集合中的元素不能重复

C、List集合中的元素不允许重复 D、Map集合中的元素可以重复,但key不能重复5、用Thread子类实现多线程的步骤顺序是( D)

A、声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法

B、声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例

C、创建Thread子类的实例,让线程调用start()方法

D、声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法

6、可以为16位字符流提供读和写操作支持的类分别是( C )

A.FileInputStream类和FileOutputStream类

B.InputStream类和OutputStream类

C.FileReader类和FileWriter类

D.File_Reader类和File_Writer类

7、要实现序列化,序列化类必须实现的接口是( A )

A、Serializable B、Runnable C、Thread D、Extenalizable

8、下列输出的结果是( A )。

第1页

class AA {

public void show( ) {

n(“类AA”);

}

}

class BB extends AA {

public void show( ){

n(“类BB”);

}

}

public class Test{

public static void main(String args[ ]) {

AA a=new AA( );

( );

a=new BB( );

( );

}

}

A、类AA B、类BB C、类BB D 类BB 类AA 类BB

、关于抽象类和接口,下列说法正确的是( D

、抽象类不能有非抽象方法

、接口可以有构造方法

、可以用new方法实例化接口和抽象类

、抽象类和接口不能实例化对象

、下列代码块执行完后,x的值是( D )

}catch(Exception e){

n(sage());

}finally{

、类AA

类AA

9) A B C D 10 int x=2;

int a=2,b=0;

try{

x++; 3

x=a/b; 0

x+=a; 2

2

x *= a;

}

A、0 B、2 C、4 D、6

得分 评卷人

二、填空题(每空2 分。共30分)

11、Java源程序文件和字节码文件的扩展名分别为__ JAVA java__ __和___CLASS_______class___。

12、在比较两个对象的值是否相同时,可以调用___ equals() ____方法。

13、用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是String ss=_goal==10__? “对了!” : 错了!

__ 。

14、程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_____run()____方法;二是建立线程实例。

15、jdbc编程时,应导入的包是 。

16、class AA implements BB{ „„„} 则AA 和BB 的关系是 BB是父类 AA是子类

AA类实现BB接口 。

17、设有数组定义:int[ ] MyIntArray={10,20,30,40,50,60,70};

则执行下面几个语句后的输出结果是___ 280 ____。

int s=0;

for(int i=0;i

s+=MyIntArray[i];

n(S);

18、在java I/O 编程时,要使用带缓冲的字节流输入,应使用 BufferedInputStream

类。

19、被调方法中产生异常后,要让异常由调用方法处理,在被调方法定义中使用

Throws 关键字。

20、User 为一个类,user1 和user2 是User类的两个引用,if(user1==user2){„„}语句中,“==”运算符比较的是user1和user2 对象引用是否相等 。是否指向同一个Uesr对象

21、为了让一个类不能被派生子类,在定义这个类时要用 final 关键字。

22、一个源文件中只能有一个和文件名相同名称的类,这个类要用 public 关键字修饰。

23、class B{

第2页

private int b;

public int getB(){ return b;}

B(int x){ b=x;(“b=”+b); }

}

class A extends B{

private int a;

A(int x,int y){

super(x); a=y; n(",a="+a);

}

}

public class Test{

public static void main(String[]args){

A obj=new A(1,2);

}

}

得分 评卷人

上述程序的输出结果是 b=1 ,

a=2 。

24、设有数组定义int[][] x={{1,2},{3,4,5},{6},{7}};,则的值为 4 。

三、程序填空题(每空2分,共20分)

25、以下定义的类ShareData用于管理多个线程共享数据data。一个线程生成data,另一个线程使用data。约定,新生成的data只有被另一个线程使用后,才能生成下一个data。反之,一个data被使用后,也不能再继续使用。所以,生成和使用data的线程之间需要互斥和同步。以下是管理上述使用方式的类,类内有要管理的共享数据,以及对共享数据的存操作putData()和取操作getData()。

class ShareData{

int data;∥共享数据

boolean newData=false;∥有最近新生成data的标志,有date为true

public synchronized int getData(){

if(!newData){

try{

wait(); ;

}catch(InterruptedException e){

n(″因错误,而中断! ″);

}

}

newData= false ;

notify( );

return data;

}

public synchronized void putData(int n){

if(!newData){

data=n;

newData=__true________;

notify() ;

} try{

wait();

}catch(InterruptedException e){

n(″因错误,而中断! ″);

}

}

26、下面方法实现了文件复制,src是源文件路径名字符串,dest是目标文件路径名字符串。

public static void copy(String src, String dest) {

File from = new File(src);

File to = new File(dest);

if ( !() ) {

n("源文件不存在!");

return;

}

File parent = entFile();

boolean f = true;

if (!()) { //如果目标文件所在的文件夹不存在,建立文件夹

f = () ;

}

if (f) {

BufferedInputStream in = null;

BufferedOutputStream out = null;

try {

NewFile();

in =new BufferedInputStream(new FileInputStream

(from));

out = new BufferedOutputStream(new FileOutputStream(to));

n("正在复制中!");

int i;

while ((i = ()) != -1 ) {

(i) ;

第3页

}

n("文件复制成功!");

} catch (IOException ex) {

tackTrace();

} finally {

if (in != null) {

try {

();

} catch (IOException ex) {

tackTrace();

}

}

if (out != null) {

try {

();

} catch (IOException ex) {

tackTrace();

}

}

}

}

}

得分 评卷人

四、程序分析题(每题4分,共8分)27、阅读下列程序,请写出该程序的输出结果。

public class A {

int m = 5; static int n = 3;

public static void main(String[] args) {

A obj1 = new A();

A obj2 = new A();

objl.m *= 2; 10

objl.n *= 4; 18

obj2.m += 1; 6

obj2.n += 6; 18

n("obj1.m=”+ obj1.m);

n("obj1.n=" + obj1.n);

n("obj2.m=" + obj2.m);

n("obj2.n=" + obj2.n);

}

}

}

28、写出下列程序运行的输出结果

class Parent{

private void method 1(){ n(″Parent′s method 1()″);}

public void method 2(){ n(″Parent′s method 2()″);

method 1(); }

(){ n(″Child′s method 1 ()″);}

(String args[]){

();

();

Parent′s method 2()

Parent′s method 1 ()

得分 评卷人

五、程序设计题(每题6分。共12分)

29、请编写方法double averageOfArray(double[] a),返回非空数组中正数的平均值(数组中可能有非正数元素)。

Public double averageOfArray(double[] a){

double sum=0;

int j=0;

for(int i=0;i<;i++){

if(a[i]>0){

sum+=a[i];

j++

}

return Sum=sum/j;

}

第4页

}

30、Dbutil类中已实现 public static Connection getConnection()方法和public

static void close(ResultSet rs,PreparedStatement ps,Connection conn)方法。getConnection方法取得数据库连接,close方法关闭连接及相关数据库操作对象。 利用Dbutil类,编写方法public boolean insertUser(String name,String

password)方法,采用预编译SQL语句向数据库表user 中插入新用户,插入成功返回true,失败返回false。user表中字段为 name vachar(40),password Varchar(40)。

public boolean insertUser(String name,String password)

{ Connection con=null;

PreparedStatement st=null;

Boolean bol=false;

Try{

Con=Dbutil. getConnection();

String sql=”insert into user values(?,?)”;

}

class Child extends Parent {

public void method l

public static void main Parent p = new Child 2 }

}

St=eStatement();

ing(1,name);

ing(2, password);

Int i=executeUpdate();

If(i>0){

bol=true;

}

}catch(SQlException e){

tackTrace();

}finally{

close(null,st ps, con);

return bol ;

}

}

第5页

2023年6月20日发(作者:)

期终考试试卷(A)

考试课程:java语言程序设计 考试时间:120分钟

题号 一 二 三 四 五 总分

得分

得分 评卷人

一、单项选择题(每题3分,共30分)

1、下述字符组合不能..作为Java程序标识符的是( D )

A、Aa12 B、$x C、y2z D、5x

、以下程序代码的输出的结果是( A )

int x=53;

n(1.0+x/2);

A、27.0 B、27.5 C、1.026 D、1.026.5

3、下列特点不属于java的是( B )

A、多线程 B、多继承 C、跨平台 D、动态

4、下列说法正确的是( D )

A、Set 集合中的元素可以重复 B、Map集合中的元素不能重复

C、List集合中的元素不允许重复 D、Map集合中的元素可以重复,但key不能重复5、用Thread子类实现多线程的步骤顺序是( D)

A、声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法

B、声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例

C、创建Thread子类的实例,让线程调用start()方法

D、声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法

6、可以为16位字符流提供读和写操作支持的类分别是( C )

A.FileInputStream类和FileOutputStream类

B.InputStream类和OutputStream类

C.FileReader类和FileWriter类

D.File_Reader类和File_Writer类

7、要实现序列化,序列化类必须实现的接口是( A )

A、Serializable B、Runnable C、Thread D、Extenalizable

8、下列输出的结果是( A )。

第1页

class AA {

public void show( ) {

n(“类AA”);

}

}

class BB extends AA {

public void show( ){

n(“类BB”);

}

}

public class Test{

public static void main(String args[ ]) {

AA a=new AA( );

( );

a=new BB( );

( );

}

}

A、类AA B、类BB C、类BB D 类BB 类AA 类BB

、关于抽象类和接口,下列说法正确的是( D

、抽象类不能有非抽象方法

、接口可以有构造方法

、可以用new方法实例化接口和抽象类

、抽象类和接口不能实例化对象

、下列代码块执行完后,x的值是( D )

}catch(Exception e){

n(sage());

}finally{

、类AA

类AA

9) A B C D 10 int x=2;

int a=2,b=0;

try{

x++; 3

x=a/b; 0

x+=a; 2

2

x *= a;

}

A、0 B、2 C、4 D、6

得分 评卷人

二、填空题(每空2 分。共30分)

11、Java源程序文件和字节码文件的扩展名分别为__ JAVA java__ __和___CLASS_______class___。

12、在比较两个对象的值是否相同时,可以调用___ equals() ____方法。

13、用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是String ss=_goal==10__? “对了!” : 错了!

__ 。

14、程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_____run()____方法;二是建立线程实例。

15、jdbc编程时,应导入的包是 。

16、class AA implements BB{ „„„} 则AA 和BB 的关系是 BB是父类 AA是子类

AA类实现BB接口 。

17、设有数组定义:int[ ] MyIntArray={10,20,30,40,50,60,70};

则执行下面几个语句后的输出结果是___ 280 ____。

int s=0;

for(int i=0;i

s+=MyIntArray[i];

n(S);

18、在java I/O 编程时,要使用带缓冲的字节流输入,应使用 BufferedInputStream

类。

19、被调方法中产生异常后,要让异常由调用方法处理,在被调方法定义中使用

Throws 关键字。

20、User 为一个类,user1 和user2 是User类的两个引用,if(user1==user2){„„}语句中,“==”运算符比较的是user1和user2 对象引用是否相等 。是否指向同一个Uesr对象

21、为了让一个类不能被派生子类,在定义这个类时要用 final 关键字。

22、一个源文件中只能有一个和文件名相同名称的类,这个类要用 public 关键字修饰。

23、class B{

第2页

private int b;

public int getB(){ return b;}

B(int x){ b=x;(“b=”+b); }

}

class A extends B{

private int a;

A(int x,int y){

super(x); a=y; n(",a="+a);

}

}

public class Test{

public static void main(String[]args){

A obj=new A(1,2);

}

}

得分 评卷人

上述程序的输出结果是 b=1 ,

a=2 。

24、设有数组定义int[][] x={{1,2},{3,4,5},{6},{7}};,则的值为 4 。

三、程序填空题(每空2分,共20分)

25、以下定义的类ShareData用于管理多个线程共享数据data。一个线程生成data,另一个线程使用data。约定,新生成的data只有被另一个线程使用后,才能生成下一个data。反之,一个data被使用后,也不能再继续使用。所以,生成和使用data的线程之间需要互斥和同步。以下是管理上述使用方式的类,类内有要管理的共享数据,以及对共享数据的存操作putData()和取操作getData()。

class ShareData{

int data;∥共享数据

boolean newData=false;∥有最近新生成data的标志,有date为true

public synchronized int getData(){

if(!newData){

try{

wait(); ;

}catch(InterruptedException e){

n(″因错误,而中断! ″);

}

}

newData= false ;

notify( );

return data;

}

public synchronized void putData(int n){

if(!newData){

data=n;

newData=__true________;

notify() ;

} try{

wait();

}catch(InterruptedException e){

n(″因错误,而中断! ″);

}

}

26、下面方法实现了文件复制,src是源文件路径名字符串,dest是目标文件路径名字符串。

public static void copy(String src, String dest) {

File from = new File(src);

File to = new File(dest);

if ( !() ) {

n("源文件不存在!");

return;

}

File parent = entFile();

boolean f = true;

if (!()) { //如果目标文件所在的文件夹不存在,建立文件夹

f = () ;

}

if (f) {

BufferedInputStream in = null;

BufferedOutputStream out = null;

try {

NewFile();

in =new BufferedInputStream(new FileInputStream

(from));

out = new BufferedOutputStream(new FileOutputStream(to));

n("正在复制中!");

int i;

while ((i = ()) != -1 ) {

(i) ;

第3页

}

n("文件复制成功!");

} catch (IOException ex) {

tackTrace();

} finally {

if (in != null) {

try {

();

} catch (IOException ex) {

tackTrace();

}

}

if (out != null) {

try {

();

} catch (IOException ex) {

tackTrace();

}

}

}

}

}

得分 评卷人

四、程序分析题(每题4分,共8分)27、阅读下列程序,请写出该程序的输出结果。

public class A {

int m = 5; static int n = 3;

public static void main(String[] args) {

A obj1 = new A();

A obj2 = new A();

objl.m *= 2; 10

objl.n *= 4; 18

obj2.m += 1; 6

obj2.n += 6; 18

n("obj1.m=”+ obj1.m);

n("obj1.n=" + obj1.n);

n("obj2.m=" + obj2.m);

n("obj2.n=" + obj2.n);

}

}

}

28、写出下列程序运行的输出结果

class Parent{

private void method 1(){ n(″Parent′s method 1()″);}

public void method 2(){ n(″Parent′s method 2()″);

method 1(); }

(){ n(″Child′s method 1 ()″);}

(String args[]){

();

();

Parent′s method 2()

Parent′s method 1 ()

得分 评卷人

五、程序设计题(每题6分。共12分)

29、请编写方法double averageOfArray(double[] a),返回非空数组中正数的平均值(数组中可能有非正数元素)。

Public double averageOfArray(double[] a){

double sum=0;

int j=0;

for(int i=0;i<;i++){

if(a[i]>0){

sum+=a[i];

j++

}

return Sum=sum/j;

}

第4页

}

30、Dbutil类中已实现 public static Connection getConnection()方法和public

static void close(ResultSet rs,PreparedStatement ps,Connection conn)方法。getConnection方法取得数据库连接,close方法关闭连接及相关数据库操作对象。 利用Dbutil类,编写方法public boolean insertUser(String name,String

password)方法,采用预编译SQL语句向数据库表user 中插入新用户,插入成功返回true,失败返回false。user表中字段为 name vachar(40),password Varchar(40)。

public boolean insertUser(String name,String password)

{ Connection con=null;

PreparedStatement st=null;

Boolean bol=false;

Try{

Con=Dbutil. getConnection();

String sql=”insert into user values(?,?)”;

}

class Child extends Parent {

public void method l

public static void main Parent p = new Child 2 }

}

St=eStatement();

ing(1,name);

ing(2, password);

Int i=executeUpdate();

If(i>0){

bol=true;

}

}catch(SQlException e){

tackTrace();

}finally{

close(null,st ps, con);

return bol ;

}

}

第5页