1、Java 面向对象编程 练习题专题 1 初识 Java一、选择题1作为 Java 应用程序入口的 main 方法,其声明格式是( B )Apublic static int main(String args) B.public static void main(String args) Cpublic void main(String args) Dpublic int main(String args) 2下面命令正确的是( B )A.java AppFirst.java Bjava AppFirstC.java appfirst.class Djavac AppFirst3设有一个 Jav
2、a 小程序,源程序名为 FirstApplet.java,其 HTML 文件为FirstApplet.html,则运行该小程序的命令为( D )A.java FirstApplet Bjavac FirstApplet.javaCappletviewer FirstApplet.java Dappletviewer FirstApplet.html4JDK 安装完成后,主要的命令如 javac、java 等,都存放在根目录的( A )文件夹下。 Abin Bjre Cinclude Ddoc5Java 语言是一种 D 语言。A机器 B汇编 C面向过程的 D面向对象的6、Java 程序的最基本组
3、成单位是 D 。A函数 B过程 C变量 D类二、简答题1Java 语言有哪些特点?答:Java 是一种具有“简单、面向对象、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行”等特点的语言。P22JDK 安装完成后,如何设置环境变量?答:在桌面上右键单击【我的电脑】 ,选择【属性】 【高级】 【环境变量】 【系统变量】 ,选择 path,单击【编辑】 ,在【变量值】栏目的最前面输入“d:jdk1.5bin ;” 。3简述 Java 应用程序和小应用程序的区别。答:Java 应用程序是由用户系统就地装入的可独立运行的 Java 程序,可以是基于窗口或控制台的。而 Jav
4、a 小应用程序需要嵌入到网页在浏览器中运行 (java 是在控制台上执行,applet 是需要网页中执行) 。4简述 Java 应用程序的开发过程答:(1)建立源程序。 (2)编译源程序。 (3)解释运行程序。专题 2 标识符、表达式、数据类型一、填空题1Java 逻辑常量有两个:( ture )和( flase ) 。2写出下列表达式的运算结果,设 a=2,b=-4,c=true。(1)-a%b+ -2(2)a=1 Aa 的值为 2,b 的值为 3,c 的值为 1 B a 的值为 2,b 的值为 4,c 的值为2Ca 的值为 2,b 的值为 4,c 的值为 1 D a 的值为 2,b 的值为
5、 3,c 的值为26设各个变量的定义如下,哪些选项的值为 true ( C )int a=3, b=3;boolean flag=true;A+a = = b B+a= = b+ C(+a = = b) | flag D(+a= =b) A6 B7 C10 D2510对下面的语句执行完后正确的说法是:( D )int c=c/3;System.out.println(c);A输出结果为 21 B输出结果为 22 C输出结果为 32 D输出结果为 3311以下选项中变量 a 已定义类型,合法的赋值语句为( D )Aa = int(y); Ba= =1; Ca = a+1=3; D+a;12执行下
6、列程序段后,ch,x,y 的值正确的是:( A )int x=3, y=4;boolean ch;ch=xyAtrue , 6 , 8 Bfalse , 6, 8 Ce, 7, 7 Dfalse, 7, 7 19、下列程序运行的结果是 D 。 public class A public static void main(String args) int x = 7%3;while(x)x-;System.out.println(x);A0 B1 Ctrue D编译错误三、编程题1使用 Math.pow()方法,求出 2 的 32 次方的值。Package pr1:Public class lx
7、l_2_4Public static void main (String args)double value;value=Math.pow(2,32);System.out.println(“2 的 32 次方是:”+value);专题 3 流程控制语句一、填空题1在 switch 语句中的表达式的类型必须是( int 型 )或者( 与 int 相容的类型【byte,char,long,short】 ) 。2break 在循环语句中的作用是( 跳出整个循环 ) 。3分支语句包括( if )和( switch ) 。4while 循环语句的循环次数( 0 或者不限 ) ,do-while 语句的
8、循环次数( 至少一次 ) ,for 语句的循环次数( 0 或者不限 ) 。二、选择题1下面程序片段输出的是什么( C )int a=3, b=1;if(a=b) Syste.out.println(“a=”+a);Aa=1 Ba=3 C编译错误,没有输出 D正常运行,但没有输出2下面语句执行后,x 的值为( C )int a=4, b=5, x=3;if(+a=b) x=x*a;A3 B12 C15 D203请看下面的程序代码:( B )if(x=0 Cx0 Dx=204请看下面的程序代码:switch(n)case 0: Syste.out.println(“first”);case 1:c
9、ase 2: Syste.out.println(“second”); break;default: Syste.out.println(“end”);当 n 为何值时,程序段将输出字符串”second”( D )A 0 B1 C2 D以上都可以5下列语句执行后,j 的值是( D )int j=3, i=3;while(-i!=i/j) j=j+2;A4 B5 C6 D76下列语句执行后,x 的值是( C )int x=2 ;dox+=x ; while(x-j)continue;while(i=e) break;A e B f C g D h10若变量都已经正确说明,则以下程序段输出为( B
10、 )a=10; b=50; c=30;if(ab) a=b;b=c;c=a;System.out.println(“a=”+a+” b=”+b+” c=”+c);Aa=10 b=50 c=10 Ba=10 b=30 c=10 C a=50 b=30 c=10 Da=50 b=30 c=3011以下程序段输出是( D )int x=1,y=0,a=0,b=0;i=(-a=b+)? - -a : +b;j=a+; k=b;System.out.println(“i=”+i+” ,j=”+j+” ,k=”+k); 2 -1 2Ai=2,j=1,k=3 Bi=1,j=1,k=2 Ci=4,j=2,k=
11、4 Di=2,j=-1,k=212以下程序的输出是( B )int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0: a+;break;case 1: b+;break;case 2:a+;break;case 3:a+;b+;System.out.println(“a=”+a+”,b=”+b); 2 0Aa=1, b=0 Ba=2,b=0 Ca=1, b=1 Da=2, b=213以下程序段输出是( C )int i=0,j=0,a=6;if (+i0) | (+j0 ) a+ :System.out.println(“i=”+i+” ,j=”
12、+j+” ,a=”+a);Ai=0,j=0,a=6 Bi=1,j=1,a=7 Ci=1,j=0,a=7 Di=0,j=1,a=714、下列程序运行的结果是 D 。public class Apublic static void main(String args)char c = d;for (int i = 1; i i; j-)aj = aj - 1;ai = x;n+;for (i = 0;i =0;i-)arri = 2*i+1;String output = “0“;int sum = 0;for(int i=0;i0 B=0 C.0 D不确定9、已知 String s= “This
13、is a string“,则 s.indexOf(“is“)的值为 B 。A1 B2 C3 D410、已知 int i=123,通过以下哪种方式可以得到字符串“123“ B 。AInteger.parseInt(i); BString.valueOf(i);CLong.parseLong(i); DFloat.parseFloat(i);11、以下程序段执行的结果为 B 。String str1, str2;str1 = “Byebye“;str2= “Byebye“;System.out.print(str1.equals(str2);System.out.println(str1 = st
14、r2);Atruefalse Btruetrue Cfalsetrue Dfalsefalse12、已知 StringBuffer sb=new StringBuffer(“abcde“),则 sb.delete(1,2)后 sb 的值为 C 。Aabc Babde Cacde Dade三、编程题1实现把“I Love Java!”的字符全部转换为小写并输出到控制台。2使用 String 类中的 split()函数,统计出“this is my homework! I must finish it!”中单词的个数。(注意:单词之间用一个空格来分隔。 )3给出两个日期,计算它们之间相隔的天数。4
15、实现将当前日期信息以 4 位年份、月份全称、两位日期形式输出。专题 7 异常处理一 填空题1一个 try 语句块后必须跟( catch )语句块, ( finally )语句块可以没有2自定义异常类必须继承( Exception )类及其子类3异常处理机制允许根据具体的情况选择在何处处理异常,可以在( try )捕获并处理,也可以用 throws 子句把他交给( 上层 )处理二选择题1. finally 语句块中的代码( A )A总是被执行 B当 try 语句块后面没有 catch 时,finally 中的代码才会执行C异常发生时才执行 D异常没有发生时才被执行2. 抛出异常应该使用的关键字是
16、( A )Athrow Bcatch Cfinally Dthrows3. 自定义异常类时,可以继承的类是( C )AError BApplet CException 及其子类 DAssertionError4. 在异常处理中,将可能抛出异常的方法放在( B )语句块中Athrows Bcatch Ctry Dfinally5. 对于 trycatch 子句的排列方式,下列正确的一项是( A )A子类异常在前,父类异常在后B父类异常在前,子类异常在后C只能有子类异常D父类异常与子类异常不能同时出现6. 使用 catch(Exception e)的好处是( D )A只会捕获个别类型的异常B捕获
17、try 语句块中产生的所有类型的异常C忽略一些异常D执行一些程序三简答题1try/catch/finally 如何使用?Try:将可能出现异常的语句放在此处。Catch:当出现异常时在此处捕获异常。Finally:无论是否出现异常都要执行。2Throw/throws 有什么联系和区别?Throw:在语句中抛出异常。Throws:在方法中出现异常之后抛到调用方法中处理。联系:都是对于异常的处理。3如何自定义异常类?4谈谈 final、finally 的区别和作用Final:修饰变量是定义常量,修饰类是不允许继承,修饰方法是不允许复写。Finally:使用在异常处理中,无论是否出现异常都要执行。5
18、如果 try里有一个 return 语句,那么紧跟在这个 try 后的 finally里的代码会不会被执行?会运行。6Error 和 Exception 有什么区别?(重要)当程序出现错误的时候就会抛出异常,异常需要被用户所捕获。Error:一般是出现的编译器的异常,不可以恢复。Exception:一般是出现的代码异常,是可以被处理的,可以被恢复的。7什么是 RuntimeException?列举至少 4 个 RuntimeException 的子类ArithmeticExceptionArrayStoreExceptionArrayIndexOUtOfBoundsExceptionClass
19、CastException四编程题1编写程序,要求输入若干整数,输入的同时计算前面输入各数的乘积,若乘积超过 100000,则认为是异常,捕获并处理这个异常,输出信息。2编写一个登录界面,要求帐户名只能由 1 至 10 位数字组成,密码只能有 6 位,任何不符合帐户名和密码要求的情况都视为异常,必须捕获并处理异常3设计自己的异常类表示对负数求平方根的错误;在类 Test 的主方法中,从键盘输入一个数,若输入的数不小于 0,则输出它的平方根;若小于 0,则抛出自定义异常;在程序中处理异常并输出提示信息“输入错误,不能对负数求平方根”专题 8 多线程一、填空题1Java 语言实现多线程的方法有两种
20、,它们是 ( 自己创建的线程子类 )和( 实现一个接口 Runnable )2线程有 5 种状态,它们是( 新建 ) 、 ( 就绪 ) 、 (运行 ) 、 (阻塞)和( 死亡 )3在 java 中,线程同步是通过( Thread )5当一个线程睡眠时,sleep()方法不消耗( )时间二选择题1. 一个 Java 程序运行后,在系统中这个程序便可以作为一个( A )A线程 B进程 C进程或线程 D不可预知2. 设已经编好了一个线程类 MyThread,要在 main()中启动该线程,需使用以下哪个方法( B D )Anew MyThreadBMyThread myThread=new MyTh
21、read(); myThread.start();CMyThread myThread=new MyThread(); myThread.run();Dnew MyThread.start();3. 以下哪个方法不能使线程进入阻塞状态( D )Asleep() Bwait() Csuspend() Dstop()4. 可以使用( B )方法设置线程的优先级AgetPriority() BsetPriority() Cyield() Dwait()5. 线程是 Java 的( D )机制A检查 B解释执行 C并行 D并发6. 以下方法用于定义线程执行体的是( C )Astart() Binit(
22、) Crun() Dmain()7. 一个线程如果调用了 sleep()方法,能唤醒它的方法是( D )Anotify() Bresume() Crun() D以上都不是三、编程题1设计四个线程对象对同一个数据进行操作,两个线程执行减操作,两个线程执行加操作2制作两个线程对象,要求用同步块的方式使第一个线程运行 2 次,然后将自己阻塞起来,唤醒第二个线程,第二个线程再运行 2 次,然后将自己阻塞起来,唤醒第一个线程两个线程交替执行。专题 9 图形用户界面编程一填空题1 AWT 的组件库被更稳定、通用、灵活的库取代,该库称为( SWING )2 ( 布局管理器 )用于安排容器上的 GUI 组件3
23、 设置容器的布局管理器的方法是( setLayout() )4 当释放鼠标按键时,将产生( MouseEvent )事件5 Java 为那些声明了多个方法的 Listener 接口提供了一个对应的( 抽象类 ) ,在该类中实现了对应接口的所有方法6 ActionEvent 事件的监听器接口是( ActionListener ) ,注册该时间监听器的方法名是( add ActionListener() ) ,事件处理方法名是( actionPerformed() )7 图形用户界面通过( 时间机制 )相应用户和程序的交互,产生事件的组件称为( 事件源 )8 Java 的 Swing 包中定义菜单
24、的类是( JMenuBar )9 向容器内添加组件使用( add() )方法10 对话框有两种类型,分别是( 模式对话框 )和( 非模式对话框 )11 工具栏一般放在窗口的( 顶层 )位置12 若要使表格具有滚动条,需要将表格添加到( JScrollBar )组件中。13 paint() 方法的参数是( Graphics )类的实例14 drawRect(int x1,int y1,int x2,int y2)中,x2 和 y2 分别代表矩形的( 高 )和( 宽 )二选择题 1 窗口 JFrame 使用( C )方法可以将 jMenuBar 对象设置为主菜单AsetHelpMenu(jMenu
25、Bar) Badd(jMenuBar) CsetJMenuBar(jMenuBar) DsetMenu(jMenuBar)2 下面属于容器类的是( C )AColor 类 BJMenu 类 CJFrame 类 DJTextField 类3 使用( B )类创建菜单对象ADimension BJMemu CJMenuItem DJTextArea4 使用( D )方法创建菜单中的分隔条AsetEditable B ChangeListener Cadd DaddSeparator 5 JPanel 和 JApplet 的默认布局管理器是( B )ACardLayout BFlowLayout C
26、BorderLayout DGridLayout 6 JFrame 的默认布局管理器是( C )ACardLayout BFlowLayout CBorderLayout DGridLayout7 按钮可以产生 ActionEvent 事件,实现哪个接口可以处理此事件( C )AFocusListener BComponentListener CActionListener DWindowListener8 容器使用( B )方法将组件添加到容器AaddComponent() Badd() CsetComponent() DAdd()9 向 JTextArea 的( A )方法传递 false 参数可以防止用户修改文本