1、Java 期末复习题一、判断题1、在 Java 程序中发生异常时,JVM 会找到每个符合条件的 catch 都执行一次。( F )2、在 Java 程序中异常分为运行时异常和非运行时异常,非运行异常必须进行处理( F )3、异常处理的 try-catch 块后必须有 finally 块。 ( F )4、异常处理器的排列次序影响处理异常的方法。( T )5、用 catch(Exception exception)语句可以捕获所有异常和错误。( F )6、启动多线程必须调用 start()方法, 如果调用 run()方法则没有启动新的线程 ( T )7、run()方法是运行线程的主体,若 run
2、方法运行结束,线程就消亡了。( T )8、线程可以用 yield()方法使同优先级的线程运行。( T )9、一个线程创建并启动后,它将执行自己的 run()方法。 ( T )10、线程可以用 yield()方法使较低优先级的线程运行。( F )11、每个 Java 线程的优先级都设置在常数 112 之间,默认的优先级设置为常数 6。(F )12、JFrame,JPanel,JApplet 和 JButton 四种组件都属于容器组件.( F )13、BorderLayout 是面板(JPanel)的缺省布局管理器。 ( F )14、BorderLayout 最多可以使用 5 个组件。( T )1
3、5、一个面板(JPanel)不能被加入另一个面板(JPanel)中。( F )16、菜单需要一个 JMenuBar 对象,以使他们能被添加到 JFrame。( T )17、标签(JLabel)可以在屏幕上显示一个字符或一幅图片。( T )18、BorderLayout 是容器 javax.swing.JFrame 默认的布局管理器。(T )19、JTextArea 可以用来接收多行文本的输入。( T )20、在 Java 坐标系统中,X 值从左向右增加。( T )21、BorderLayout 布局管理器把组件排列在北、南、东、西和中间区域。( T )22、边界布局管理器(BorderLayo
4、ut)把容器分成 5 个区域,每个区域只能放一个组件。( T )23、一个组件可以注册一个或多个事件监听器。( T )24、通过类 .URL 中的成员方法可获得网络资源定位器的相关信息( T )25、Socket 的实例对象调用其成员方法 getInputStream 来获得该 Socket 所对应的输入流。( T )26、数据报(DatagramPacket)传输是不可靠的,无法保证包按顺序到达。(T )27、当 Socket 连接上面的传输结束后,服务器执行 Socket 的 shutdown 方法来关闭连接。( F )二、选择题1、下说法中错误的一项是( A)。A、线程一旦创建,则立即自
5、动进行B、线程创建后需要调用 start()方法,将线程置于可运行状态C、调用线程的 start()方法后,线程也不一定能立即执行D、线程处于可运行状态,意味着它可以被调度2、下列说法中不正确的一项是( A )。A、Thread 类中没有义 run()方法 B、可通过继承 Thread 类来创建线程C、Runnable 接口中定义了 run()方法 D、可以通过实现 Runnable 接口来创建线程3、下列说法中,正确的一项是( C )A、线程可以不运行于程序中 B、一个程序中只能有一个线程C、线程必须运行于程序中 D、线程本身就是程序4、线程开始运行时,是从下列哪一个方法开始执行的( B )
6、A、main() B、start() C、run() D、init()5、Runnable 接口中定义的方法是( C )A、start() B、init() C、run() D、Runnable()6、下列说法中不正确的一项是( B )。A、多线程并发执行时,各个线程中语句的执行顺序是确定的B、多线程并发执行时,线程之间的相对执行顺序是确定的C、线程执行顺序的不确定性会导致执行结果的不确定性D、线程执行顺序的不确定性会破坏共享数据的一致性7、下列是继承 Thread 类后得到的子类,请选择正确的一项。( C )A、class A4 extends Thread B、class A4 imple
7、ments Thread void run( ) public void run() / / C、class A4 extends Thread D、class A4 extends Thread public void run( ) run( ) / / 8、下面那一个函数是线程的入口函数? ( B )A)private void run() B)public void run()C)public void start() D)public void begin()9、下列方法中可以用来创建一个新线程的是_C_。A)实现 java.lang.Runnable 接口并重写 start()方法B
8、)实现 java.lang.Runnable 接口并重写 run()方法C)继承 java.lang.Thread 类并重写 run()方法D)实现 java.lang.Thread 类并实现 start()方法10、Thread 类中能运行线程体的方法是 ( D )A)start() B)resume() C)init() D)run()11、在 java 程序中,下列关于线程的说法错误的是( D )A、线程启动调用 start 方法 B、线程的主体是 run 方法C、线程运行中调用 sleep 方法可以进入阻塞状态D、在 java 中,优先级的数值为 1 的线程可以抢占优先级为 5 的线程
9、的资源12、若编译和运行下列代码,出现的结果将是 ( A )public class MyAdd extends Thread static int total = 10; int n;public MyAdd(int n) this.n=n; public void run() trysleep(n);total=total+n;System.out.println(total);catch(Exception e)System.out.println(“EXCEPTION!”);public static void main(String args) MyAdd t1 = new MyAd
10、d(3000); MyAdd t2 = new MyAdd(1000); t1.start(); t2.start(); A、1010, 4010 B、3010, 4010C、1010, 3010 D、3010, 101013、若编译和运行下列代码,出现的结果将是_D_public class MyThread implements Runnable String myString = “Yes “; public void run() this.myString = “No “; public static void main(String args) MyThread t = new My
11、Thread(); new Thread(t).start(); for (int i=0; i 7、编写程序实现窗口,包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容提制到标签中。(使用 AWT)(1)import java.awt.*;/引入相关包publicMyFramepublicMyFrame()Frame fr = new Frame();/设置窗体的布局为 FlowLayout(2)fr.addLayout(new FlowLayout();Label lbl = new Label(“Init info”);TextField txt = new Te
12、xtField(30);Button btn = new Button(“Sure”);fr.add(lbl);fr.add(txt);fr.add(btn);/给按钮注册监听器(3)Btn.addActionListner(new Monitor();/使用窗体可见,并设置大小(3)fr.setSize(400,400);fr.setVisible(true); /定义内部类监听 ActionEvent 事件(4)class Monitor implements ActionEventpublic void actionPerformed(ActionEvent e)lbl.setText(
13、txt.getText(););public static void main(String args)newMyFrame();8、设计程序实现带菜单的窗口,包含“File”和“Edit”二个菜单,在“File”下又包含“New”, “Open”, “Exit”三个菜单项,选择“Exit”项时退出应用程序。(提示:涉及到的类有 MenuBar, Menu, MenuItem)importjava.awt.*;importjava.awt.event.*;public class MenuTest/定义各菜单项MenuItem newItem = new MenuItem(“New”);Men
14、uItem openItem = new MenuItem(“Open”);MenuItem exitItem = new MenuItem(“Exit”);public MenuTest()Frame fr = new Frame();/定义菜单Menu fileMenu = new Menu(“File”);Menu editMenu = new Menu(“Edit”);/往 File 菜单中添加菜单项 newItem, openItem, exitItem(1)_fileMenu.add(newItem);fileMenu.add(openItem);fileMenu.add(exit
15、Item);/定义菜单条,并添加菜单 fileMenu, editMenu(2)_MenuBar bar=new MenuBar();bar.add(fileMenu);bar.add(editMenu);/给窗口添加菜单条fr.setMenuBar(bar);/给 exitItem 注册事件(3)_exitItem.addActionListener(newMenuHandler();_/设置窗口的可见性fr.setSize(200,200);/fr.setVisible(true);/定义内部类处理菜单事件class MenuHandler implements ActionListene
16、rpublic void actionPerformed(ActionEvent e)/如果用户点击了 exit 菜单项则退出程序(4)_if(e.getSource()=exitItem)_System.exit(0);/定义 main 方法(5)public static void main(String args)new MenuTest();_9、写程序实现包括一个复选框的窗体,并处理用户选取事件。importjava.awt.*;importjava.awt.event.*;(1) _class MyCheck extends _Frame_/类声明,类名为MyCheck,继承自 F
17、rame 类 /类体public MyCheck()(2)_Panel p=new Panel();p.setLayout(new FlowLayout();_ /创建 Panel 的一个实例,并设置其布局为 FlowLayoutCheckbox cbx = new Checkbox(“isPassed”);(3)_p.add(cbx);_cbx.addActionListener(new Mt();_/向面板中加入组件 cbx,并为组件注册监听器add(p);(4)_setVisible(true);_setSize(400,400);_ /把窗体设为可见,并设置大小public stati
18、c void main(String args)newMyCheck();/定义内部类实现监听,相应的监听接口为 ItemListener(5) _class Mt implements ItemListener_/内部类的声明public void itemStateChanged(ItemEvent e)System.out.println(e);10、制作一个窗体,包括一个带图标的按钮(JButton 类对象),并设置边框,当用户点击按钮时,弹出一个确认对话框。importjavax.swing.*;importjavax.swing.border.*;importjava.awt.*;
19、class ViewDemoJFrame fr;public ViewDemo()/用 ImageIcon 类包装一张图片(java.gif),/该图片在当前目录的 img 子目录下(1)ImageIcon ii=new ImageIcon(“java.gif”);/创建一个带有图标的按钮 btn(2)JButton btn =new JButton(ii);/*使用线形边框类的构造方法 LineBorder(Color c, int n),*创建一个边框对象 bd,其中 c 为边框的颜色,n 为边框的粗细。*/(3)_LineBorder bd =new LineBorder(new Col
20、or(0,0,0),5);btn.setBorder(bd);/给按钮注册监听事件(4)_btn.addActionListener(new BtnHandler();fr = new JFrame();Container c = fr.getContentPane();c.add(btn);fr.setSize(300,300);fr.setVisible(true);class BtnHandler implements ActionListenerpublic void actionPerformed(ActionEvent e)String msg = “Are you sure?“;
21、/*使用 JOptionPane 类的静态方法 showConfirmDialog(Frame f, String s),其中 f 为对话框所属的窗体,s 为对话框显示的信息,弹出一个确认对话框。*/(5)_JOptionPane.showConfirmDialog(new Frame(),msg);_11、以下程序的功能为:读入从键盘输入的一串字符存放于一个字节数组中,然后将该数组写入到当前目录下的文件 out.txt 中。Import_java.io.*;_public class byteArraytofilepublic static void main(String args)try
22、byte buffer=new _byte_128;FileOutputStream fos= new FileOutputStream(_“out.txt”_);System.in.read(buffer);fos.write(_buffer_,0,buffer.length);fos.close();catch(_IOException e_ )四、程序阅读题1、掌握数据库的操作import java.sql.*;class Test_JDBC public static void main(String srg) String driverName = “com.microsoft.sq
23、lserver.jdbc.SQLServerDriver“;String dbURL = “jdbc:sqlserver:/localhost:1433; DatabaseName=DATA_TEST“;String userName = “sa“;String userPwd = “123456“;Connection dbConn=null;Statement stat=null;ResultSet rs=null;String sql=“select * from student“;try Class.forName(driverName);dbConn = DriverManager.
24、getConnection(dbURL, userName, userPwd);stat=dbConn.createStatement();rs=stat.executeQuery(sql);while(rs.next()System.out.println(rs.getInt(1);System.out.println(rs.getString(2); catch (Exception e) e.printStackTrace();2、掌握列表的操作import java.util.*;class IteratorDemo2 public static void main(String ar
25、gs)/我们先往链表中装东西ArrayList a = new ArrayList();a.add(“东西 1“);a.add(“东西 2“);a.add(“东西 3“);a.add(“东西 4“);a.add(2,“东西 5“);/从链表中取东西怎么办呢,自然就用到了迭代器/用法是这样的Iterator iter = a.iterator() ; /iter 迭代器对象,可以用它来数了while(iter.hasNext() /先往左数,如果有东西就执行里的语句String m = iter.next(); /数到什么就拿出来 赋值给 mSystem.out.println(m); /拿出
26、m 用一下,即打印3、写出下列程序的作用import java.io.IOException;import .Socket;class Scan extends Threadprivate int p;Socket ss = null;public Scan(int p) this.p = p;public static void main(String args) for(int i=0;i=0)formatedNumber=number.substring(i,number.length();/截取字符串从 4 开始,到 7 结束i=i-1;else i=number.length()-1
27、;int k=0;for (int j = i; j=0; j-) /i=3formatedNumber=number.charAt(j)+formatedNumber; /charAt(j)是取指定位置的字符,就是去 3 位置上的字符与formatedNumber(.45)合并k=(k+1)%3;if (k=0 / 得到最后结果 1,200.45catch(NumberFormatException e)System.out.println (“参数错误!要求是数字格式!“);return formatedNumber;public static void main(String args)
28、 System.out.println (TestException.toSeparateNumber(“001200.45“); System.out.println (TestException.toSeparateNumber(“235A6.54“); /异常报错了7、阅读下面程序代码,写出程序运行的输出结果。 I will win class Test3public static void main(String args)trycallMethod();catch(Exception e)System.out.print(“will “);System.out.println(“wi
29、n “);static void createException()throw new ArithmeticException();static void callMethod()trycreateException();System.out.print(“not “);catch(ArrayIndexOutOfBoundsException e)System.out.print(“you “);finallySystem.out.print(“I “);System.out.print(“never “);8、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。 134class my
30、Exception extends Exceptionpublic class Samplepublic void foo()trySystem.out.print(1);bar();System.out.print(2);catch(myException e)System.out.print(3);finallySystem.out.print(4);public void bar() throws myExceptionthrow new myException();public static void main(String args)Sample s=new Sample();s.f
31、oo();9、仔细阅读下面的程序,写出程序的执行顺序(写出编号):6 5 4 1 2 3public class UsingExceptions public static void main( String args )try method1(); / 1catch(Exception e)System.err.println(e.getMessage(); / 2finallySystem.out.println(“Program is end!“); / 3public static void method1() throws Exception method2(); /4public
32、static void method2() throws Exception method3(); /5public static void method3() throws Exceptionthrow new Exception( “Exception thrown in method3“ ); /610、阅读下面的程序 Test.java:成功!two-1import java.io.*;public class Testpublic static void main(String argv)Test t = new Test();System.out.println(t.fliton(
33、);public int fliton()tryFileInputStream din = new FileInputStream(“test.txt“);din.read();catch(IOException ioe)System.out.println(“one“);return -1;finallySystem.out.println(“two“);return 0;如果文件 test.txt 与 Test.java 在同一个目录下,test.txt 中仅有一行字符串“hello world!”,上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什
34、么?11、阅读下面的程序,写出带划线语句或注释,并写出该程序的作用:import java.io.*;public class Test public static void main(String args) scanFiles(“c:/“);public static void scanFiles(String path) if (path = null)return;File f = new File(path); / 在“c:/”新建文件 if (!f.exists()return;if (f.isFile() / 如果文件 f 是正常文件,则运行后面 System.out.println(f.getAbsolutePath();else File dir = f.listFiles(); for (int i = 0; i dir.length; i+)scanFiles(diri.getAbsolutePath();/ 扫描文件 f 里面的子文件