夏Java程序设计复习资料1.docx

上传人:b****6 文档编号:7626834 上传时间:2023-01-25 格式:DOCX 页数:21 大小:24.04KB
下载 相关 举报
夏Java程序设计复习资料1.docx_第1页
第1页 / 共21页
夏Java程序设计复习资料1.docx_第2页
第2页 / 共21页
夏Java程序设计复习资料1.docx_第3页
第3页 / 共21页
夏Java程序设计复习资料1.docx_第4页
第4页 / 共21页
夏Java程序设计复习资料1.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

夏Java程序设计复习资料1.docx

《夏Java程序设计复习资料1.docx》由会员分享,可在线阅读,更多相关《夏Java程序设计复习资料1.docx(21页珍藏版)》请在冰豆网上搜索。

夏Java程序设计复习资料1.docx

夏Java程序设计复习资料1

一、单项选择题

1.关于Java选择结构下列哪个说法正确?

(B)

A.if语句和else语句必须成对出现

B.if语句可以没有else语句

C.switch结构中每个case语句中必须用break语句

D.switch结构中必须有default语句

2.while循环和do…while循环的区别是:

(D)

A.没有区别,这两个结构任何情况下效果一样

B.while循环比do…while循环执行效率高

C.while循环是先循环后判断,所以循环体至少被执行一次

D.do…while循环是先循环后判断,所以循环体至少被执行一次

3.下列说法哪个是正确的?

(C)

A.程序执行到break语句时一定会结束所有的循环

B.程序执行到continue语句时会结束当前循环

C.break语句和continue语句都可以和标签协同使用

D.continue语句和break语句的作用相同

4.方法内的变量:

(B)

A.一定在方法内所在有位置可见

B.可能在方法内的局部可见

C.可以在方法外可见

D.方法外也可用

5.void的含义:

(B)

A.方法体为空B.方法没有返回值

C.没有意义D.定义方法时必须使用

6.throws的作用:

(C)

A.没有意义B.表示后面是方法的输出值

C.表示方法可能会抛出例外

D.方法的标志,每个方法都必须有

7.下列说法哪个正确?

(D)

A.不需要定义类,就能创建对象

B.对象中必须有属性和方法

C.属性必须是简单变量

D.属性可以是简单变量,也可以是一个对象

8.下列说法哪个正确?

(A)

A.一个程序可以包含多个源文件

B.一个源文件中只能有一个类

C.一个源文件中可以有多个公共类

D.一个源文件只能供一个程序使用

9.被声明为private,protected及public的类成员,在类外部:

(B)

A.只能访问声明为public的成员

E.只可能访问到声明为protected和public的成员

B.都可以访问

C.都不能访问2去取6

10.抽象方法:

(C)

A.可以有方法体

B.可以出现在非抽象类中

C.是没有方法体的方法

D.抽象类中的方法都是抽象方法

11.关于类中类的说法哪个正确?

(D)

A.类中类不能使用上层类的私有属性和方法

B.类中类可以广泛使用,不受任何限制

C.类中类可以单独编译

D.类中类可以使用上层类的私有属性和方法

12.下列说法哪个正确?

(B)

A.Java中允许一个子类有多个父类

B.某个类是一个类的子类,它仍有可能成为另一个类的父类

C.一个父类只能有一个子类

D.继承关系最多不能超来4层

13.在调用构造函数时:

(C)

A.子类可以不加定义就使用父类的所有构造函数

B.不管类中是否定义了何种构造函数,创建对象时都可以使用默认构造函数

C.先调用父类的构造函数

D.先调用形参多的构造函数

14.this和super:

(C)

A.都可以在main()方法中

B.都是指一个内存地址

C.不能用在main()方法中

D.意义相同

15.关于抽象类哪个正确?

(B)

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

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

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

D.接囗和抽象类是同一回事

16.如果一个程序段中有多个catch,程序会:

(C)

A.每个catch都执行一次

B.把每个符合条件的catch都执行一次

C.找到适合的例外类型后就不再执行其他catch

D.找到适合的例外类型后继续执行后面的catch

17.下面关于例外控制器排序说法正确的是:

(B)

A.应先捕捉父类例外,再捕捉子类例外

B.应先捕捉子类例外,再捕捉父类例外

C.有继承关系的例外不能在同一try块的控制器中使用

D.如果先匹配到父类例外,后面的子类例外仍然可以被匹配到

18.下列关于finally说法正确的是:

(C)

A.finally语句应该放在所有例外控制器的最前面

B.如果程序在前面的例外控制器中匹配了合适例外,就不再执行finally语句了

C.无论程序是否找到合适的例外控制器,都会去执行finally语句

如果程序在前面的例外控制器中匹配到了多个合适的例外,就不再执行finally语句了

19.如果程序逻辑要求在很多情况下输出一个固定的提示信息,下列说法正确的是:

(A)

A.使用String和StringBuffer都可以

B.使用String和StringBuffer,程序的执行效率一样

C.使用StringBuffer效率比较高

D.以上都不对

20.Vector类对象中的元素可以是:

(C)

A.int型整数B.浮点数

C.对象D.属性

21.如果程序逻辑要求对集合中的元素需要经常进行查找定位,应该使用哪些组件来实现?

(B)

A.VectorB.Hashtable

C.IteratorD.Map

22.Character流与Byte流的区别在于:

(A)

A.每次读入的字节数不同

B.前者带有缓冲,后者没有

C.前者是块读写,后者是字节读写

D.二者没有区别,可以互相使用

23.为了实现多线程程序中线程间通讯,需要使用的流是:

(B)

A.Filestream

B.Pipedstream

C.Randomaccessstream

D.Filterstream

24.用最简单的代码输出某个文件内容,最好采用:

(A)

A.Filestream

B.Pipedstream

C.Randomaccessstream

D.Filterstream

25.下列属于图形用户界面元素的有:

(C)

A.AppletB.窗口

C.按钮C.线程

26.每个作用Swing组件的程序都必须至少有一个:

(B)

A.按钮B.顶层容器

C.标签D.菜单

27.监听事件和处理事件:

(B)

A.都由Listener完成

B.都由在相应事件Listener处登记过的组件完成

C.由Listener和组件分别完成

D.由Listener和窗口分别完成

28.进程是指:

(B)

A.一段程序B.正在运行的程序

C.一个.java文件D.一个.class文件

29.在JSP中引用其他Java包,应该使用指令:

(C)

A.importB.include

C.pageD.package

30.关于forward动作的说法正确的有:

(C)

A.forward动作跳转到的页面执行完毕后,程序将返回到原来的页面

B.无论跳转到什么页面都可以传递参数过去

C.forward以下的代码将不能执行

D.不能直接利用forward动作本身向跳转的页面传递参数

31.下列说法正确的是:

(A)

A.只要.class文件放在同一个目录下,引用其他类不需要做任何说明

B.要引用同目录下的其他.class文件,必须在classpath变量中设置该路径

C.在一个类中引用其他自定义类,必须将两个类定义放在一个.java文件中

D.引用不同目录下的类,只要在classpath变量中设置好该路径即可

32.通过如下语句定义的StringBuffer,其length()方法与capacity()方法的返回值分别为:

(B)

StringBuffergreeting=newStringBuffer(50);

Stringa=”HappynewYear”;

greeting.append(a);

A.15,15B.15,50

C.50,15D.50,50

33.BitSot的最小长度是:

(D)

A.8位B.16位

C.32位D.64位

34.如果要读取一个大文件的末尾的一段内容,并且知道该段落的确切位置,最方便的流是:

(C)

A.FilestreamB.Pipedstream

C.RandomaccessstreamD.Filterstream

PartialAnswers:

20.C21.B22.A23.B24.A25.C26.B27.B28.B29.C30.C31.A32.B33.D34.C

二、多项选择题

1.面向过程程序设计的核心是:

(CD)

A.商业逻辑B.客观实体

C.算法D.要解决的问题

2.符合对象和类关系的是:

(CD)

A.人和老虎B.书和汽车

C.楼和建筑物D.汽车和交通工具

3.下列哪些是指线程的状态?

(ABC)

A.RunnableB.Dead

C.newThreadD.NonRunnable

4.网络应用的3层结构指哪些层?

(ACD)

A.Web层B.用户层

C.业务层D.数据层

5.J2EE组件有:

(ABD)

A.ServletB.JavaBeans

C.AWTD.EJB

6.记录页面访问历史事件可以使用的方法有:

(AB)

A.使用cookieB.改写URL

C.使用sessionD.使用表单隐藏

PartialAnswers:

3.A、B、C4.A、C、D5.A、B、D6.A、B

三、试说出以下程序的功能:

classAccount1{

privateStringname;

privateintvalue;

voidput(inti){

value=value+i;

}

intget(inti){

if(value>i)

value=value-i;

else

{

i=value;

value=0;

}

returni;

}

inthowmatch(){

returnvalue;

}

}

classSave2extendsThread{

privateAccount1a1;

privateintamount;

publicSave2(Account1a1,intamount){

this.a1=a1;

this.amount=amount;

}

publicvoidrun(){

synchronized(a1){

intk=a1.howmatch();

try{

sleep

(1);

}catch(InterruptedExceptione){

System.out.println(e);

}

a1.put(amount);

System.out.println("现有"+k+",存入"+amount+",余额"+a1.howmatch());

}

}

publicstaticvoidmain(Stringargs[]){

Account1a1=newAccount1();

(newSave2(a1,100)).start();

(newSave2(a1,200)).start();

(newFetch2(a1,500)).start();

}

}

classFetch2extendsThread{

privateAccount1a1;

privateintamount;

publicFetch2(Account1a1,intamount){

this.a1=a1;

this.amount=amount;

}

publicvoidrun(){

synchronized(a1){

intk=a1.howmatch();

try{

sleep

(1);

}catch(InterruptedExceptione){

System.out.println(e);

}

System.out.println("现有"+k+",取走"+a1.get(amount)+",余额"+a1.howmatch());

}

}

}

四、本程序为银行账户的存取款线程设计,通过synchronized互斥锁实现存取款的同步。

程序中包含三个类,银行账户类Account,存款线程类Save2和取款线程类Fectch2.

在主函数中先创建一个新账户a1,并创建三个线程,分别调用函数start()使线程处于可运行状态,该函数再调用run()函数使线程处于运行状态,由于账户对象a1用synchronized修饰,故账户a1在任一时刻只能有一个线程访问。

这样实现多个存取款线程的同步,保证账户金额的一致性。

输出结果:

现有0,存入100,余额100

现有100,存入200,余额300

现有300,取走300,余额0

四、编程题

有下面一段Server段程序,目的是能够同时服务多个客户,客户的请求是一句话(一个String)。

如果这个请求的内容是字符串"plain"的话,服务器仅将"hello"字符串返回给用户。

否则将用户的话追加到当前目录的文本文件Memo.txt中(路径为"Memo.txt"),并向用户返回"OK"。

注意Server并发的处理多用户,Memo.txt被共享,要求不能出现数据不一致。

Server的程序如下文件Server.java:

   publicclassServer{

    publicstaticvoidmain(Stringargs[]){

     MemoControllermemoController=newMemoController();

     try{

       ServerSocketss=newServerSocket(1999);

        while(true){

         Sockets=ss.accept();

         try{

           UserThreadt=newUserThread(s,memoController);

           t.start();

           }catch(Exceptione){

            e.printStackTrace();

           }

         }

        }catch(Exceptione){

         e.printStackTrace();

        }finally{

         memoController.close();

        }

      }

    }

类UserThread程序如下:

文件UserThread.java:

publicclassUserThreadextendsThread{

Sockets;

 MemoControllermemo;

 publicUserThread(Sockets,MemoControllermemo){

     this.s=s;

     this.memo=memo;

 }

 publicvoidrun(){

  try{

   BufferedReaderbr=newBufferedReader(new

InputStreamReader(s.getInputStream()));

    PrintWriterpw=newPrintWriter(new

OutputStreamWriter(s.getOutputStream()));

Stringreq=br.readLine();

    if(req.equals("plain")){

      pw.println("hello");

    }else{

        memo.append(req);

        pw.println("OK");

       }

       pw.flush();

       pw.close();

       br.close();

       s.close();

     }catch(Exceptione){

      e.printStackTrace();

     }

    }

   }

请根据题目的要求和现有的Server.java,UserThread.java的程序完成类MemoController.java的程序。

ReferenceAnswer:

importjava.io.*;

 publicclassMemoController{

  FileOutputStreamfos;

  OutputStreamWriterosw;

  BufferedWriterbw;

 publicMemoController(){

  try{

    fos=newFileOutputStream("memo.txt",true);

    osw=newOutputStreamWriter(fos);

    bw=newBufferedWriter(osw);

    }catch(FileNotFoundExceptione){};

  }

 publicsynchronizedvoidappend(Strings){

  try{

    bw.write(s,0,s.length());

    bw.flush();

    bw.close();

    osw.close();

    fos.close();

    }catch(IOExceptione){}

  }

 publicstaticvoidmain(Stringargs[]){

  MemoControllermmc=newMemoController();

  mmc.append("Iamxubin");

  }

 }

五、详述出以下程序的功能:

importjava.sql.*;

importjavax.swing.*;

classjdbcExample1{

publicstaticvoidmain(Stringargs[]){

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Stringurl="jdbc:

odbc:

studyDSN";

Stringlogin="sa";

Stringpassword="";

Connectionconn=

DriverManager.getConnection(url,login,password);

Statementstatement=conn.createStatement();

StringsqlQuery="select*fromcourse";

ResultSetrs=statement.executeQuery(sqlQuery);

while(rs.next()){

System.out.print(rs.getString

(1)+",");

System.out.print(rs.getString

(2)+",");

System.out.println(rs.getInt(3));

}

statement.close();

conn.close();

}

catch(SQLExceptionsqlException){

JOptionPane.showMessageDialog(null,sqlException.getMessage(),

"DatabaseError",JOptionPane.ERROR_MESSAGE);

System.exit

(1);

}

catch(ClassNotFoundExceptionclassNotFound){

JOptionPane.showMessageDialog(null,classNotFound.getMessage(),

"DriverNotFound",JOptionPane.ERROR_MESSAGE);

System.exit

(1);

}

}

}

五、classjdbcExample1

通过JDBC存取studyDSN数据库中的表course,输出所以字段的值。

同时说明java应用程序通过jdbc存取数据库时应遵循的五个步骤:

(注意其在程序中的相应位置)

1.加载JDBC驱动程序

2.建立数据库连接

3.建立SQL语句对象,执行查询

4.处理结果集

5.关闭数据库连接

 

六、试说出以下程序的功能:

shuben289

//WageCalculatorapplication

//byYongjieWang

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.text.*;

publicclassWageCalculatorextendsJFrame

{

//JLabelandJTextFieldforhours

privateJLabelhoursJLabel;

privateJTextFieldhoursJTextField;

//JLabelandJTextFieldforovertimeworkedinaweek

privateJLabelovertimeJLabel;

privateJTextFieldovertimeJTextField;

//JLabelandJTextFieldforgrosswages

privateJLabelgrossWagesJLabel;

privateJTextFieldgrossWagesJTextField;

//ButtonGrouptocontrol

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1