《JAVA程序设计》期末考试试题 (五)
一、 单选题
1、当某一线程正处于休眠状态,而另一个线程用 Thread 类中的 interrupt() 方法中断它时,抛出的异常类型是( )。 A) IOException B) RuntimeException C) InterruptedException D) ClassNotFoundException 2、下面的程序段的功能是( )。
File file1=new File(\"d:\\\\xxx\\\\yyy\\\\zzz\"); file1.mkdirs();
A)在当前目录下生成子目录:\\xxx\\yyy\\zzz B)生成目录: e:\\xxx\\yyy\\zzz C)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对
3、应用程序的main方法中有以下语句,则输出的结果是 ( )。
String s = \"xxxxxxxxxxxxxxx#123#456#zzzzz\"; int n = s.indexOf(\"#\"); int k = s.indexOf(\"#\String s2 = s.substring(n+1, k); System.out.println(s2);
A) 123456 B) 123 C) xxxxxxxxxxxxxxx D) zzzzz 4、关于下面的程序Test.java说法正确的是( )。
public class Test { String x=\"1\"; int y;
public static void main(String args[]) { int z=2; System.out.println(x+y+z); } }
A)3 B)102 C) 12 D)程序有编译错误
5、应用程序的main方法中有以下语句,则输出的结果是 ( )。
第 1 页 共 37 页
int b[][]={{1, 1, 1}, {2,2}, {3}};
int sum=0;
for(int i=0; i 6、应用程序的main方法中有以下语句,则执行后输出的结果是 ( )。 int[] x = {125,21,5,168,98}; int min = x[0]; for (int i=1; i A) 125 B) 5 C) 98 D) 168 7、应用程序的main方法中有以下语句,则输出的结果是 ( )。 Hashtable hashtable=new Hashtable(); hashtable.put(\"100\hashtable.put(\"200\hashtable.put(\"300\ System.out.println(hashtable.get(\"300\").toString() + hashtable.get(\"200\").toString() + hashtable.get(\"100\").toString()); A) aaa B) bbb C) ccc D) cccbbbaaa 8、以下关于java异常说法不正确的是( )。 A) Throwable 类是 Java 语言中Error类和Exception类的父类。 B)当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。 if(x[i] < min) min = x[i]; 第 2 页 共 37 页 C)如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有异常对象的父类。 D)以上说法都不对。 9、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是( )。 import java.io.*; public class Test { } A) ABCABC B) ABCDE C)Test D) ABCDE ABCDE ABCDE 10、下面说法不正确的是( )? A)列表(List)、集合(Set)和映射(Map)都是java.util包中的接口。 B)List接口是可以包含重复元素的有序集合。 C)Set接口是不包含重复元素的集合。 D)Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。 public static void main(String args[]) { } try { } catch(IOException e) { } System.out.println(e.toString()); String s=\"ABCDE\"; byte b[]=s.getBytes(); FileOutputStream file=new FileOutputStream(\"test.txt\file.write(b); file.close(); 二、多选题 1、下面哪些关键字能用来控制对类成员的访问( )? A) public B) protected C) private D) default 第 3 页 共 37 页 2、下面关于Java中异常处理try块的说法正确的是( )? A) try块后通常应有一个catch 块,用来处理try块中抛出的异常。 B) catch 块后必须有finally块。 C)可能抛出异常的方法调用应放在try块中。 D)对抛出的异常的处理必须放在try块中 3、线程对象的生命周期中,通常经历下面哪些状态( )。 A)新建 B)运行 C)就绪 D)死亡 4、定义如下的二维数组b,下面的说法正确的是( )。 int b[][]={{1, 2, 3}, {4, 5},{6, 7, 8}}}; A)b.length的值是3。 B)b[1].length的值是3。 C)b[1][1]的值是5。 D) 二维数组b的第一行有3个元素 5、类B是一个抽象类,类C是类B的非抽象子类,下列创建对象x1的语句中正确的是( )。 A) B x1= new B( ); B) B x1= new C( ); C) C x1=new C( ); D) C x1= new B( ); 6、下面关于进程、线程的说法正确的是( )。 A)进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。 B)线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。 C)Java多线程的运行与平台相关。 D)对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。 7、下面关于外部类和内部类成员的相互访问的规则中,正确的选项是( )。 A)内部类可以直接访问外部类的成员 B)外部类可以直接访问内部类的成员 C)外部类不能访问内部类的成员 D)外部类可通过创建内部类的实例来访问内部类的成员 第 4 页 共 37 页 三、程序阅读题 1、阅读下面的程序代码,并回答问题(问3分,❖问3分,共6分)。 String s1 = new String(\"abcde\"); String s2 = new String(\"abcde\"); boolean b1= s1.equals(s2); boolean b2 = s1== s2; System.out.print(b1+\" \"+b2); 程序段执行后,在命令行的输出结果如何? ❖解释输出(1)的结果的原因? 答案: true false ❖equals方法比较两个字符串的内容是否相等;运算符“==”判断两个对象是否指向同一个引用,即是否为同一个对象。 2、阅读下面的程序,并回答问题(问3分,❖问3分,共6分)。 import java.io.*; public class Test { public static void main(String args[]) throws IOException { BufferedReader buf=new BufferedReader( new InputStreamReader(System.in)); while(true) { String str = buf.readLine(); if(str.equals(\"quit\")) break; int x=Integer.parseInt(str); System.out.println(x*x); } } } 编译运行上面的程序: 从键盘输入10,回车后输出的结果如何? ❖从键盘输入exit,回车后程序能正确执行吗?为什么? 答案: 100 ❖不能;因为方法Integer.parseInt(str)不能将字符串“exit”转化为整数,抛出异常。 第 5 页 共 37 页 3、写出下面的程序编译、运行后的结果(6分)。 public class Test{ public static void main(String args[]) { new Student(\"Tom\ new Student(\"Jack\ new Student(\"Mary\ System.out.println(\"name\sex\chinese\english\"); Student.print(); } } class Student { protected String name; protected char sex; protected int chinese; protected int english; protected Student next; static Student list; Student (String name, char sex, int chinese, int english) this.name=name; this.sex=sex; this.chinese=chinese; this.english=english; this.next=list; list=this; } static void print() { Student friend=list; if (friend==null) System.out.println(\"The list is empty.\"); else { do{ System.out.println(friend.toString()); 第 6 页 共 37 页 { friend=friend.next; }while(friend!=null); } } public String toString() { return new String(name+\"\\"+sex+\"\\"+chinese+\"\\"+english); } } 答案: name sex chinese english Mary f 76 86 Jack m 66 89 Tom m 90 88 《JAVA程序设计》期末考试试题 (六) 一、填空题 1.定义类的保留字是( class ),定义接口的保留字是( interface )。 2.Socket通常也称为 ( 套接字 ),用于描述( IP地址 ) 和 ( 端口 )。 3.线程的优先级在( 1 )至( 10 )之间,数值越大( 任务越紧急 )。 4.构造方法是一种特殊的成员方法,构造方法名与( 类名 ) 相同。 5.Java语言只允许单继承,指每个类只能有一个 ( 父类 )。 6.Java源程序的扩展名是( .java ),经过编译后的程序的扩展名是( .class )。 7. 在一个时间只能由一个线程访问的资源称为 ( 临界资源 ) 。访问临界资源的代码( 临界代码 )。 8. 在多线程系统中,多个线程之间有 ( 同步 ) 和 ( 互斥 ) 两种关系。 二、选择题 1.关于选择结构下列哪个说法正确? ( ) A.if语句和 else语句必须成对出现 B.if语句可以没有else语句对应 C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句 2.while循环和 do…while循环的区别是: ( ) A.没有区别,这两个结构任何情况下效果一样 第 7 页 共 37 页 B.while循环比 do…while循环执行效率高 C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次 3.关于 for循环和 while循环的说法哪个正确? ( ) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果 C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 4.下列修饰符中与访问控制无关的是 ( ) A.private C.protected 5. void的含义: ( ) A.方法没有返回值 C.没有意义 6. return语句: ( ) A.只能让方法返回数值 C.方法中可以有多句return 7.关于对象成员占用内存的说法哪个正确? ( ) A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C.对象的方法不占用内存 D.以上都不对 8.下列说法哪个正确? A.不需要定义类,就能创建对象 B.对象中必须有属性和方法 C.属性可以是简单变量,也可以是一个对象 D、属性必须是简单变量 B.方法都必须含有 D.不能用来返回对象 B. 方法体为空 D. 定义方法时必须使用 B.public D.final 第 8 页 共 37 页 9.下列说法哪个正确? ( ) A、一个程序可以包含多个源文件 B、一个源文件中只能有一个类 C、一个源文件中可以有多个公共类 D、一个源文件只能供一个程序使用 10.关于方法main()的说法哪个正确?( ) A.方法main()只能放在公共类中 B main()的头定义可以根据情况任意更改 C.一个类中可以没有main()方法 D.所有对象的创建都必须放在main()方法中 11.构造函数何时被调用? ( ) A、创建对象时 C、使用对象的方法时 12. 抽象方法: ( ) A、可以有方法体 B、可以出现在非抽象类中 C、是没有方法体的方法 D、抽象类中的方法都是抽象方法 13.关于继承的说法正确的是: ( ) A、子类将继承父类所有的属性和方法。 B、子类将继承父类的非私有属性和方法。 C、子类只继承父类public方法和属性 D、子类只继承父类的方法,而不继承属性 14.关于构造函数的说法哪个正确? ( ) A、一个类只能有一个构造函数 B、一个类可以有多个不同名的构造函数 C、构造函数与类同名 D、构造函数必须自己定义,不能使用父类的构造函数 B、类定义时 D、使用对象的属性时 第 9 页 共 37 页 15. this和super: A、都可以用在main()方法中 B、都是指一个内存地址 C、不能用在main()方法中 D、意义相同 16.关于super的说法正确的是: A、是指当前对象的内存地址 B、是指当前对象的父类对象的内存地址 C、是指当前对象的父类 D、可以用在main()方法中 17.覆盖与重载的关系是 ( ) A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中B.覆盖方法可以不同名,而重载方法必须同名 C.final修饰的方法可以被覆盖,但不能被重载 D.覆盖与重载是同一回事 18.关于接口哪个正确? ( ) A、实现一个接口必须实现接口的所有方法 B.一个类只能实现一个接口 C.接口间不能有继承关系 D.接口和抽象类是同一回事 19.异常包含下列哪些内容? ( ) A.程序执行过程中遇到的事先没有预料到的情况 B.程序中的语法错误 C.程序的编译错误 D.以上都是 20. 对于已经被定义过可能抛出异常的语句,在编程时: ( A、必须使用try/catch语句处理异常,或用throws将其抛出 B.如果程序错误,必须使用 try/catch语句处理异常 C.可以置之不理 第 10 页 共 37 页 ) D.只能使用try/catch语句处理 21. 字符流与字节流的区别在于( ) A.前者带有缓冲,后者没有 B.前者是块读写,后者是字节读写 C. 二者没有区别,可以互换使用 D. 每次读写的字节数不同 22.下列流中哪个不属于字节流 ( ) A.FileInputStream B.BufferedInputStream C. FilterInputStream D. InputStreamReader 三、程序填空题 1.public class Sum{ } 输出结果为: j is : (1) j in calculate() is : (2) At last j is : (3) 答案:(1) 10; (2) 20; (3) 10。 2. 按要求填空 public static void main(String [] args){ } static void calculate (int j){ } for (int i = 0;i<10;i++) j++; System.out.println(\"j in calculate() is: \"+j); int j=10; System.out.println(\"j is : \"+j); calculate(j); System.out.println(\"At last, j is : \"+j); 第 11 页 共 37 页 abstract class SuperAbstract{ } interface AsSuper { } abstract class SubAbstract extends SuperAbstract implements AsSuper { public void b(){…} } public class InheritAbstract extends SubAbstract{ } 在以上这段程序中: 抽象类有:SuperAbstract和 (1) (写出类名) 非抽象类有: (2) (写出类名) 接口有: (3) (写出接口名) AsSuper中的x()方法是(4)方法,所以在InheritAbstract中必须对它进行(5) 答案: (1) SuperAbstract; public void x(){…} public int c(int i ) {…} public String f(){…} public static void main(String args[]){ } InheritAbstract instance=new InheritAbstract(); instance.x(); instance.a(); instance.b(); instance.c(100); System.out.println(instance.f()); abstract String f(); void x(); void a(){…} abstract void b(); abstract int c(int i); 第 12 页 共 37 页 (2) InheritAbstract; (3) AsSuper; (4) 抽象; (5) 覆盖和实现。 3. 按注释完成程序 public class Leaf { } 输出结果为 i = (3) 答案: (1) this; (2) new Leaf(); (3) 3 4. 按注释提示完成文件复制的程序 //FileStream源代码如下: import java.io.*; class FileStream { public static void main(String args []) { try { File inFile = new File(\"file1.txt\"); //指定源文件 File outFile = new File(\"file2.txt\"); //指定目标文件 private int i = 0; //此属性值用于检验 Leaf increment(){ //定义方法increment(),返回值是Leaf类的对象 } void print() { } public static void main(String args[]){ Leaf x = (2); //创建Leaf类的对象x x.increment().increment().increment().print(); System.out.println(\" i = \" + i); i++; return (1) ;//将当前对象的地址作为返回值返回 }//多次调用方法increment(),返回的都是x的地址,i 值表示调用次数 第 13 页 共 37 页 FileInputStream fis =(1); FileOutputStream fos = new FileOutputStream(outFile); int c; while ((c = fis.read ())!=-1) (2); fis.close(); fos.close(); } catch (Exception e) { } 答案: (1) new FileInputStream(inFile); (2) fos.write(c); 5. 阅读程序,给出结果: // AbstractClassDemo.java源代码如下: abstract class Shape { //定义抽象类Shape和抽象方法display } class Circle extends Shape { } class Rectangle extends Shape { } class Triangle extends Shape { void display() { //实现抽象类的方法 System.out.println(\"Rectangle\"); } void display() { } //实现抽象类的方法 System.out.println(\"Circle\"); abstract void display(); } System.out.println(\"FileStreamsTest: \"+e); } //逐字节从源文件中输入,再输出到fos流 第 14 页 共 37 页 } void display() { } //实现抽象类的方法 System.out.println(\"Triangle\"); public class AbstractClassDemo{ } 输出结果是 ? 答案:(1) Circle; (2) Rectangle; (3) Triangle。 public static void main(String args[]){ } (new Circle()).display(); //定义无名对象来调用对应的display方法 (new Rectangle()).display(); (new Triangle()).display(); 《JAVA程序设计》题库 一、选择题(每小题2分,共40分) 1.下列关于java语言的叙述中,正确的是____________ A.机器语言 B汇编语言 C.面向过程的语言 D.面向对象的语言 2.下列________是Java合法的标识符 A.static B.5stu C.-3e D. _atm 3.下列关于继承的描述中,正确的是_____ _ A. 在Java中允许多重继承 B.Java的单一继承使代码更可靠 C. 在Java中一个类只能实现一个接口 D.在Java中一个类不能同时继承一个类和实现一个接口 4.下列_________代表十六进制整数 A.0x7E B. 034 C.2E3 D.19 5.下列____符号修饰成员后,可以在Java中用类名前缀直接调用 A. static B. abstract C. final D. define 6.switch语句不能用于下列_______数据类型 A. byte B. short C. char D.float 7.执行下列程序段后,b,x,y的值正确的是_________ 第 15 页 共 37 页 int x=6, y=8; boolean b; b= x < y || ++ x = = - - y; A. true , 6, 8 B. false , 7 ,7 C. true, 7, 7 D. false ,6 , 8 8.设a=8,则表达式a>>2的值是_______ A. 1 B. 2 C. 3 D. 4 9.下面是findSum(int m,int n)方法的定义,方法调用findSum(1,4)的返回结果是________ int findSum(int m,int n) { int sum=0; for(int i=m;i<=n;i++) { sum+=i; } return sum; } A.1 B. 4 C. 5 D. 10 10.Java中main()方法的返回值是______________ A. string B. int C. char D. void 11.以下关于JAVA程序的叙述中正确的是__ ________。 A. 在JAVA程序中,main函数必须位于程序的最前面 B. JAVA程序的每行只能有一条语句 C. 在对一个JAVA程序进行编译的过程中,可发现注释中的描写错误 D. JAVA程序中必须有一个主函数 12、若有int a=1,b=2,c=3,d=4;boolean m,n;执行表达式(m=a>b)&&(n=c++>d)后c的值为 __________。 A.1 B.2 C. 3 D. 4 13、JAVA语言提供的合法的关键字是__ ________。 A.Char B.max C.switch D.Default 14、以下各标识符组中,合法的用户标识符为________。 A. Pad、#abc B. b_1、a10 C. void、max D. 8a、temp 15、若有double x=2,y;则表达式y=x+5/2的值是__ _________。 A.3 B.4 C.4.5 D.4.0 16、设有int x=y=z=1;boolean c;则执行语句c=--x>0&&--y<2||--z<1;后,x,y,z的值分别为________。 A.0,1,1 B. 0,1,0 C. 1,0,1 D. 0,0,1 17、int a=12,b; b=a>>2;则b、a的值为_____ ____。 第 16 页 共 37 页 A. 3、3 B.3、12 C. 6、12 D. 24、3 18、 执行下面的语句后,x、y、z的值为___ ________。 int x=7,y=9,z; z=(x>y)?x+y:x/y; A.7、9、16 B.7、9、0 C.16、9、16 D.16、16、16 19、以下关于if语句的错误描述是__ _______。 A.条件表达式可以是任意的表达式 B.条件表达式只能是关系表达式或逻辑表达式 C.条件表达式的括号不能省略 D.与else配对的if语句是其之前最近的未配对的if语句 21. 下列语句序列执行后,k的值是( )。 int j=8,k=15; for(int i=2;i!=j;i+=6){ k++; } A. 18 B. 15 C. 16 D. 17 22. 下列语句序列执行后,j的值是( )。 int j=3, i=2; while(--i != i/j) j=j+2; A. 2 B. 4 C. 6 23. 下列语句序列执行后,i的值是( )。 int i=0; do { i +=3;} while(i<10); A. 3 B. 6 C. 9 24. 下列语句序列执行后,k的值是( )。 int i=6, j=8, k=10, n=5, m=7; if(!(i 25. 下列语句序列执行后,k的值是( )。 int x=3, y=5, k=0; switch(x%y+3){ case 0: k=x*y;break; case 6: k=x/y;break; case 12: k=x-y;break; default: k=x*y-x;break; } 第 17 页 共 37 页 D. 5 D. 12 A. 12 B. 0 C. 15 D. -2 26. 执行完下面的程序段后,输出的结果是( )。 char c='\\0'; for(c='a';c<'z';c+=3){ if(c>='d') break; } System.out.println(\"\\'\"+c+\"\\'\"); A. 'e' B. 'f' C. 'a' D. 'd' 27. 执行完下面的程序段后,k的值是( )。 int k=0; label:for(int i=1;i<10;i++) { for(int j=1;j<5;j++) { k+=i+j; if(j==3) break label; } } A. 3 B. 9 C. 12 D. 6 28. 执行完下面的程序段后,k的值是( )。 int k=0; label:for(int i=1;i<3;i++) { for(int j=1;j<3;j++) { k+=i+j; System.out.println(k); if(i==2) continue label; } } A. 3 B. 5 C. 8 D. 12 29.表达式(short)8/9.2*5的值的类型为( )。 A. short B. int C. double D. float 30.以下选项中变量均已正确定义,合法的赋值语句是( )。 A.a = =1 B. ++i C. a = a + 1 = 5 D. y = (int)i(i已初始化) 31.下面关于Java Application 程序结构特点描述中,错误的是( )。 第 18 页 共 37 页 A.一个Java Application程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。 B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。 C.组成Java Application程序的多个类中,有且仅有一个主类。 D.一个.java文件中定义多个类时,允许其中声明多个public类。 32.编译Java程序后生成的面向JVM的字节码文件的扩展名是( )。 A..java B..class C..obj D..exe 33.编译Java程序时,用于指定生成class文件位置的选项是( )。 A.-d B.-g C.-verbose D.-nowarn 34.下面哪些选项是正确的main方法说明?( ) A.void main() B.private static void main(String args[]) C.public main(String args[]) D.public static void main(String args[]) 35.下面哪些标识符在Java语言中是合法的?( ) A.6persons$ B.TwoUsers C.*point D.instanceof F.end-line 36.下列( )是合法标识符。 A.2end B.-hello C.=AB D.整型变量 37.若x = 5,y = 8,则表达式x|y的值为( )。 A.3 B.13 C.0 D.5 38.若定义有变量float f1,f2 = 8.0F,则下列说法正确的是( )。 A.变量f1,f2均被初始化为8.0 B.变量f1没有被初始化,f2被初始化为8.0 C.变量f1,f2均未被初始化 D.变量f2没有被初始化,f1被初始化为8.0 39.基本数据类型short的取值范围是( )。 A.(-256)~ 255 B.(-32 768)~ 32 767 C.(-128)~ 127 D.0~65 535 40.下列( )是不能通过编译的语句。 A.double d = 545.0; B.char a1 = “c”; C.int i = 321; D.float f1 =45.0f; 41.若定义有short s; byte b; char c; 则表达式s * b + c的类型为( )。 A.char B.short C.int D.byte 42.下列循环语句的循环次数是( )。 int i=5; do { System.out.println(i--); i--; }while(i!=0); A.5 B.无限 C.0 D.1 43.下面的表达式哪些是正确的? ( ) A.String s=\"你好\";int i=3; s+=i; B.String s=\"你好\";int i=3; if(i==s){ s+=i}; C.String s=\"你好\";int i=3; s=i+s; D. String s=null; int i=(s!=null)&&(s.length()>0)?s.length():0; 44.下列代表十六进制整数的是( )。 A.012345 B.2008 C.0xfa08 D.fb05 第 19 页 共 37 页 45.在switch(expression)语句中,expression的数据型不能是( )。 A.char B.short C.double D.byte 46.指出正确的表达式( )。 A.byte=128; B.long l=0xfffL; C.Boolean=null; D.double=0.9239d; 47.下面关于类的继承性的描述中,错误的是( )。 A.继承是在已有的基础上生成新类的一种方法 B.Java语言要求一个子类只有一个父类 C.父类中成员的访问权限在子类中将被改变 D.子类继承父类的所有成员,但不包括私有的成员方法 48.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是( )。 A.默认 B.protected C.private D.public 49.在类的修饰符中,规定只能被同一包类所使用的修饰符是( )。 A.public B.默认 C.final D.abstract 50.下列关于抽象类的描述中,错误的是( )。 A.抽象类是用修饰符abstract说明的 B.抽象类是不可以定义对象的 C.抽象类是不可以有构造方法的 D.抽象类通常要有它的子类 51.下列关于构造方法的叙述中,错误的是( )。 A.构造方法名与类名必须相同 B.构造方法没有返回值,且不用void声明 C.构造方法只能通过new自动调用 D.构造方法不可以重载,但可以继承 52.下面关于接口的描述中,错误的是( )。 A.一个类只允许继承一个接口 B.定义接口使用的关键字是interface C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现 D.接口实际上是由常量和抽象方法构成的特殊类 53.下列哪些方法与方法public void add(int a){}为不合理的重载方法?( ) 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) 54.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是( )。 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; 55、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A. .java B. .class C. .html D. .exe 56、设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 57、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 58.Java SE的命令文件(java、javac、javadoc等)所在目录是( )。 A.%JAVA_HOME%\\jre B.%JAVA_HOME%\\lib C.%JAVA_HOME%\\bin D.%JAVA_HOME%\\demo 第 20 页 共 37 页 59.在以下供选择的概念中,不属于面向对象语言概念的是( ) A.类 B.函数 C.动态联编 D.抽象 60.JAVA语言中,int类型的数据长度是() A.1个字节 B. 2个字节 C. 4个字节 D.8个字节 二、填空题(每空1分,共10分) 1.已知:int a =8,b=6; 则:表达式++a-b++的值为( 3 )。 2.(interface)只描述系统所提供的服务,而不包含服务的实现细节。 3.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。 4.在方法体内定义的变量是(局部变量) 5.(构造函数)是一个特殊的方法,用于创建一个类的实例。 6.类成员的访问控制符有(public)、(private)、(protected)和默认四种。 7.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。 8.(子类)直接赋值给(父类)时,子类对象可自动转换为父类对象,(父类)赋值给(子类)时,必须将父类对象强制转换为子类对象。 9.Java语言中,定义子类时,使用关键字(extends)来给出父类名。 10.实现接口中的抽象方法时,必须使用(抽象类)的方法头。 11.接口中定义的数据成员均是(public),所有成员方法均为(public)方法,且没有(private)方法。 12.this代表(当前对象)的引用,super表示的是当前对象的直接父类对象。 13.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。 14.接口中只能包含(public)类型的成员变量和(public)类型的成员方法。 15.JAVA应用程序运行的第一个函数是(main ) 16、JAVA源文件的扩展名为___.java_____,字节码的扩展名_.class_________。 17、标识符是由____字母_______,___下划线________,___$_______为开头 18、int a=6,b=5; float c; c=a/b; 则c的值为___1.0_______ 19、JAVA源文件的文件名必须与____公共类________保持一致。 20、短路逻辑运算符包括__&&___和__|__|__,三目运算符是___?:______。 21、定义一个单精度浮点型变量f,并赋值为1.56,JAVA语句为_________float f =1.56_F_______。 22、int x=2,y=5; boolean b;b=++x>4&++y<3,则x、y、b的值为______ 第 21 页 共 37 页 _______3__,____6______,____ false ______。 23、float f=33.7; f=f%10; 则f的值为___3.7______。 三、程序阅读题(每小题10分,共20分) 1.以下程序段的输出结果为 Message four Int x=0,y=4,z=5; If(x>2){ If(y<5){ System.out.println(“Message one”); } Else { System.out.println(“Message Two”); } } Else if(z>5){ System.out.println(“Message three”); }else{System.out.println(“Message four”);} 2.写出以下程序的输出结果 Value is two. Value is three. Int j=2; Switch(j){ Case 2: System.out.println(“Value is two.”); Case 2+1: System.out.println(“Value is three.”); Break; Default: System.out.println(“Value is ”+j); Break; } 3. 写出以下程序的输出结果 * ** *** **** ***** For(int i=1;i<=5;i++) { For(int j=1;j<=i;j++) System.out.print(“*”); System.out.println(“”); 第 22 页 共 37 页 } 4. 下列程序运行后,输出的结果是__5 5 6__ public class Test{ public static void main(String[] args){ int c=5; System.out.println(c); System.out.println(c++); System.out.println(c); } } 5.下列程序运行后,输出的结果是__ i>8__ public class Ifelse{ public static void main(String[] args){ int i=9; if(i<3) System.out.println(“i<3”); else if(i<8) System.out.println(“3System.out.println(“i>8”); } } 6.下列程序运行后,输出的结果是_ defaultZeroOne _ public class Base{ public static void main(String[] args) { int i=4; switch(i){ default:System.out.print(“default”); case 0: System.out.print(“Zero”); case 1: System.out.print(“One”); break; case 2: System.out.print(“Two”); } } 四、程序题(每题15分,共30分) 1、请写出完整的程序代码,定义一个类,类名为Test,求1到10的阶乘 Public Test{ Public static void main(String[] argv){ Long result =1; For(int i =1;i<=10;i++){ result = result*i; 第 23 页 共 37 页 } System.out.println(“1到10的阶乘是:”+result); } } 2、请写出完整的程序代码,类名为Test,利用for语句打印九九乘法表。 Public Test{ Public static void main(String[] argv){ Long result =1; For(int i =1;i<=9;i++){ For(int j=1;j<=i;j++){ result = i*j; System.out.print(i+”*”+j+”=”+result + “\”); } System.out.println(“”); } } } 3、请写出完整的程序代码,类名为Test,求1+2+3+……100的奇数的和 Public Test{ Public static void main(String[] argv){ Long result =1; For(int i =1;i<=100;i++){ if(i % 2 == 0) continue; result = result+i; } System.out.println(“1到100奇数的和是:”+result); } } 4. 编写子Application程序,实现求出1—100之和 public class abc{ public static void main(String[] args){ for(int i=1,sum=0;i<=100;i++) sum+=i; System.out.println(“sum=”+sum); } } 第 24 页 共 37 页 5.编写子Application程序,实现1-100之间的偶数输出 public class For{ public static void main(String[] args) { for(int i=1; i<=100;i++){ if(i%2!=0) continue; System.out.println(“偶数”+i); } } 6.创建一个桌子类table,该类中有桌子名称,重量,桌面宽度,长度和桌子高度属性,并含有以下几个方法。 (1) 构造方法:初始化所有成员变量 (2) area( ): 计算桌面地面积 (3) display(): 在屏幕上输出所有成员变量的值 (4)changeweight(int w):改变桌子重量 在main()方法中实现创建一个桌子对象,计算桌面地面积,改变桌子重量,并在屏幕上输出所有桌子地属性值 public class table { private String name; private int weight; private int length; private int width; private int height; public table() { name=\"桌子\"; weight=100; length=10; width=10; height=10; } public void dispaly() { System.out.print(\"name=\"+name+\"weight=\"+weight+\"length=\"+length+\"width=\"+width+\"h 第 25 页 共 37 页 eight=\"+height+\"\\n\"); } int area() { int area; area=length*width; return area; } void changeweight(int w) { weight=w; //return weight; } public static void main(String[] args) { // TODO Auto-generated method stub table ta =new table(); ta.dispaly(); int x; x=ta.area(); System.out.print(\"面积=\"+x+\"\\n\"); ta.changeweight(10); ta.dispaly(); } } 《JAVA程序设计》期末考试试题 (一) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A. java B. .class C. html D. .exe 2、设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类 第 26 页 共 37 页 名AB作为前缀就可以调用它,该方法头的形式为( )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为 编辑源程序 、 编译生成字节码 和 解释运行字节码 。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占 用 2 字节内存空间。 3、设 x = 2 ,则表达式 ( x + + )/3 的值是 0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。 5、 抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 最终(final) 方法是不能被当前类的子类重新定义的方法。 6、创建一个名为 MyPackage 的包的语句是package MyPackage ; , 该语句应该放在程序的位置为: 应该在程序第一句 。 7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是 120 。 int s = 0 ; for (int i = 0 ; i < MyIntArray.length ; i + + ) if ( i % 2 = = 1 ) s += MyIntArray[i] ; System.out.println(s); 8、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义可以实现 多 重继承关系。 三、写出下面程序的运行结果 1、 import java.io.*; public class abc { public static void main(String args [ ]) { 第 27 页 共 37 页 AB s = new AB(\"Hello!\VA.\"); System.out.println(s.toString( )); } } class AB { String s1; String s2; public AB(String str1, String str2) { s1 = str1; s2 = str2; } public String toString( ) { return s1+s2; } } 运行结果:Hello! I love JAVA. 2、 import java.io.* ; public class abc { public static void main(String args[ ]) { int i, s = 0 ; int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 }; for ( i = 0 ; i < a.length ; i ++ ) if ( a[i]%3 = = 0 ) s += a[i] ; System.out.println(\"s=\"+s); } } 运行结果:s = 180 3、import java.io.* ; public class abc 第 28 页 共 37 页 { public static void main(String args[ ]) { System.out.println(\"a=\"+a+\"\\nb=\"+b); } } class SubClass extends SuperClass { int c; SubClass(int aa, int bb, int cc) { super(aa, bb); c=cc; } } class SubSubClass extends SubClass { int a; SubSubClass(int aa, int bb, int cc) { super(aa, bb, cc); A = aa+bb+cc; } void show() { System.out.println(\"a=\"+a+\"\\nb=\"+b+\"\\nc=\"+c); } } 运行结果:a=60 b=20 c=30 选择题 1.在下列概念中,Java语言只保留了 _B____。 A.运算符重载 B.方法重载 C.指针 D.结构和联合 2.下列关于JAVA语言特性的描述中,错误的是____B___。 A. 支持多线程操作 B.JAVA程序与平台无关 C.JAVA程序可以直接访问Internet上的对象 第 29 页 共 37 页 D.支持单继承和多继承 3.下列关于Java Application程序在结构上特点的描述中,错误的是______。 A.Java程序是由一个或多个类组成的 B.组成Java程序的若干个类可以放在一个文件夹中,也可以放在多个文件夹中 C.Java程序的文件名要与某个类名相同 D.组成Java程序的多个类中,有且仅有一个主类 4.Java程序经过编译后生成的文件的后缀是______ A. .obj B..exe C..class D..java 5.下列关于运行字节码文件的后缀是_______. A.第一个命令行参数(紧跟命令字的参数)被存放在args[0]中 B.第一个命令行参数被存放args[1]中 C.命令行的命令字被存放在args[0]中 D.数组args[]的大小与命令行参数的个数无关 6.Java语言所用的字符集中字符是_____位 A.8 B.16 C.32 D.64 7.下列关于标识符的描述中,正确的是________ A.标识符中可以使用下划线的美元符 B.标识符中可以使用链接符和井号符 C.标识符中大小写字母是无区别的 D.标识符可选用关键字 8.Java语言的各种分隔符中,非法的是________ A.空白符 B.分号 C.逗号 D.问号 9.下列是Java语言中可用的注释符,其中错误的是_______ A. // B. /*…*/ C. /**…**/ D. /**…*/ 10.Java语言中字符型数据的长度是______位 A.8 B. 16 C. 32 D. 64 11.下列描述的两种数据类型的长度不相等的是_______ A.字符型和布尔型 B.字节型和布尔型 C.短整型和字符型 D.整型和单精度浮点型 12.下列是Java语言中的复合数据类型,其中错误的是________ A.数组 B.接口 C.枚举 D.类 13.下面是关于Java语言中数据类型的强制转换的描述,其中错误的是________ A.当数据类型从高转换为低时需要强制转换 B.强制转换时使用强制转换运算符,形如(<类型>) C.浮点型数据强制转换为整型时,小数部分四舍五入 D.赋值操作中都要采用强制类型 14.下列关于常量的描述中,错误的是_________ A.Java语言的常量有5种 B.浮点型数12.456是单精度的 C.布尔型常量只有两个可选值:true和false D.字符串常量含有结束符‘\\0’ 15.下列关于定义符号常量的描述中,错误的是________ A.定义符号常量使用关键字const B.定义符号常量时要赋初值 第 30 页 共 37 页 C.符号常量既可以定义为类成员,又可在方法中定义 D.定义符号常量时必须给出数据类型 16.下列关于变量的默认值的描述,其中正确的是 A.定义变量而没有进行初始化时,该变量具有默认值 B.字符型变量的默认值为换行符 C.布尔型变量的默认值为true D.变量的默认值可以被改变 17.下列关于变量定义的描述正确的是___ A.定义变量时至少要指出变量名字和类型 B.定义变量时没有给初值,该变量值应该是无意值 C.定义变量时,同一类型多个变量间可用逗号隔开 D.定义变量是必须要给变量初始化 18.下列关于变量作用域的描述中正确的是 A.在某个作用域定义变量,仅在该作用域内是可见的,而在该作用域外事部可见的 B.在类中定义变量的作用域在类体内,在该类中的方法可以使用 C.在方法中定义的变量的作用域仅在该方法体内 D.在方法中作用域可嵌套,在嵌套的作用域中可以定义听命变量 19.下列关于增1(+ +)减1(- -)运算符的描述中正确的是 A.增1减1运算符都是单目运算符 B.增1减1运算符都具有前缀运算和后缀运算 C.增1减1运算符不会改变变量的值 D.增1减1运算符前缀运算和后缀运算表达式值是相同的 20.下列关于运算符的优先级的描述中正确的是 A.在表达式中,优先级高的运算符先进行计算 B.复赋值运算符优先级最低 C.单目运算符的优先级高于双目运算符和三目运算符 D.逻辑运算符优先级高于逻辑位运算符 21.下列关于表达式的描述中,正确的是 A.任何表达式都有确定的值和类型 B.算术表达式的类型由第一个操作数的类型决定 C.逻辑表达式的类型数是逻辑型的 D.赋值运算表达式的类型取决于右值表达式的类型 22.下列表达式中,非法的是 int a=5,b=5;double c=1.1,d=2..2; A.a+c+ + +d B.(a+c)-- C.c<A.if语句中可以有多个else语句和else if语句 B.if语句中可以没有else语句和else if语句 C.if语句中的(条件)可以使用任何表达式 D.if语句的if体,else体内可以有循环语句 24.下列关于开关语句的描述中,错误的是 A.开关语句中,default子句可以省略 B.开关语句中,case子句的(语句序列)中一定含有break语句 C.开关语句中,case子句和default子句都有可以有多个 第 31 页 共 37 页 D.退出开关语句的唯一条件是执行break语句 25.下列关于循环语句的描述中,错误的是 A.任何一种循环体内都可以含一种循环语句 B.循环体可以使空语句也可以是空 C.循环体内可以出现多个break语句 D.循环语句,循环体至少被执行一次 26.下列循环语句的循环次数是 int i=5;do{System.out.println(i--); i--; }while(i!=0) A.0 B.1 C.5 D.无限 27.下列循环语句中,循环体被执行的次数为 for(int i=0,j=0;(j=18)||(i<4);i++); A.3 B.4 C.不确定 D.无限 28.下列关于Java语言的数组描述中,错误的是 A.数组的长度通常用length表示 B.数组下标从0开始 C.数组元素是按顺序存放在内存的 D.数组在赋初始值是都不判断 29.下列关于数组的定义形式,错误的是 A.int[] a;a=new int; B.char b[];b=new char[80]; C.int[] c=new char[10] D.int []d[3]=new int[2][]; 30.下列关于字符串的描述中,错误的是 A.Java语言中,字符串分为字符串常量和字符串变量两种 B.两种不同的字符串都是String类对象 C.Java语言中不再使用字符数组存放字符串 D.Java Application程序的main()参数args[]是一个String类的对象数组,用它可以存放若干个命令行参数 31.下列对封装的描述中,错误的是 A.封装体包含了属性和行为 B.封装体中的访问权限是相同的 C.被封装的某些信息在封装体外事部可见的 D.封装使得抽象的数据类型提高了可重用性 32.下列关于继承性的描述中错误的是 A.一个类可以生成多个子类 B.子类继承了父类的所有成员 C.Java语言支持单重继承和多重继承 D.Java语言通过接口可使用子类使用多个父类 33.下列对多态性的描述中错误的是 A.Java语言允许运算符重载 B.Java语言允许方法重载 C.Java语言允许变量覆盖 D.多态性提高了程序的抽象性了简洁性 34.在类的修饰符中,规定只能被统一包类所使用的修饰符是 第 32 页 共 37 页 A.public B.默认 C.final D.abstract 35.在类的修饰符中,规定中允许该类自身访问的修饰符是 A.private B.public C.默认 D.protected 36.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是 A.public B.private C.默认 D.protected 37.下列关于构造方法的特点的描述中,错误的是 A.不可重写 B.方法同名类 C.无返回类型 D.系统自动调整 38.下列关于静态方法的描述中,错误的是 A.在类体内说明静态变量方法使用关键字static B.静态方法只能处理静态变量和静态方法 C.静态方法不占用对象的内存空间,非静态方法占用对象的内存空间 D.静态方法只能用类名调用 39.下列静态初始化器的描述中,错误的是 A.静态初始化器是用来对类进行初始化的,而不是对某个对象初始化 B.静态初始化器是有关键字static和一对花括号组成的语句 C.静态初始化器不同于构造方法,它不是方法 D.静态初始化器是产生新对象时,有系统制动调用 40.下列关于抽象类的描述中,错误的是 A.抽象类是用修饰符abstracte说明的 B.抽象类不可以定义对象 C.抽象类是不可以有构造方法的 D.抽象类通常用它的子类 41.下列关于继承的描述中 ,错误的是 A.继承是在已有类的基础上生成新类的一种方法 B.子类继承父类的所有成员 C.Java语言中一个子类只有一个父类 D.父类中成员的访问权限在子类中将被改变 42.下列关于子类继承父类的成员的描述中,错误的是 A.子类中集成的所有成员都可以直接访问 B.子类中定义有与父类同名变量时,子类继承父类的操作中,使继承父类的变量;子类执行自己的操作中,使用自己的变量 C.当子类中出项成员方法头与父类方法头相同时,子类成员方法覆盖父类成员方法 D.方法重载是编译时处理的,而方法覆盖时运行时处理的 43.下列关于接口的描述中,错误的是 A.接口实际上有常量和抽象方法构成的特殊类 B.一个类只允许继承一个接口 C.定义接口使用的关键字是interface D.在继承接口的类中通常给出接口中定义的抽象方法的具体实现 44.下列关于包的描述中,错误的是 A.包十一中特殊的类 B.包是若干个类的集合 C.包是使用package语句创建的 第 33 页 共 37 页 D.包有有名包和无名包两类 45.下列系统提供常用的类,是所有类的分类的是 A.Math B. Object C.System D.String 46.下列关于异常的描述中,错误的是_____。 A. 异常是一种经过修正后仍可执行的错误。 B. 异常是一种程序在运行中出现的不可恢复执行的错误。 C. 不仅Java语言有异常处理,C++也有异常处理。 D. 出现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行。 47.下列关于异常的描述中,错误的是_____。 E. 程序运行时异常由Java虚拟机自动进行处理。 F. 使用try-catch-finally语句捕获异常。 G. 使用throw语句抛出异常。 H. 捕获到的异常只能用当前方法中处理,不能用其他方法处理。 48.下列关于try-catch-finally语句的描述中,错误的是_____。 I. try语句后面的程序段将给出处理异常的程序。 J. catch()方法跟在try语句后面,它可以上一个或多个。 K. catch()方法有一个参数,该参数是某种异常类的对象。 L. finally语句段后面总是被执行的,该语句起到统一接口的作用。 49.下列关于抛出异常的描述中。错误的是_____。 M. 捕捉到发生的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理。 N. 在说明要抛出异常的方法时应加关键字throw语句。 O. <异常列表>中可以有多个用逗号分开的异常 P. 抛出异常的方法中要使用下属抛出异常语句:throw<异常名>;其中,<异常名>是 异常类的类名 50.下列关于用户创建自己的异常的叙述中,错误的是______。 Q. 创建自己的异常应先创建一个异常类 R. 为实现抛出异常,须在可能抛出异常的方法中书写throw语句 S. 捕捉异常的方法是使用try-catch-finally语句格式 T. 使用异常处理不会使整个系统更加安全和稳定 51.下面的关键词和方法_______,不是线程同步所需要的。 A. synchronized B. wait() C. notify() D.sleep() 52.但对线程进行调度使其暂停时,暂停的时间单位是_____. A. 毫秒 B.秒 C. 分钟 D.小时 53.主线程属于______. A.守护线程 B.用户线程 C.Thread线程 D.Runnable线程 54.__________方法可以让某个线程等待其他线程执行结束。 A. sleep() B. wait() C. notify() D. join() 55.为了使线程处于暂停状态,可引用_______方法。 A.wait() B.sleep() C.join() D.notify() 第 34 页 共 37 页 56._______方法是现在的Java版本不再使用的方法 A.suspend() B.resume() C.stop() D.start() 简答题 1. Java语言中,数据类型装换有哪两种?当数据从低类型装换为高类型时需要强制装换 吗? 2. 整型数据有3种表现形式?浮点型变量有哪两种表示形式? 3. 布尔型常量可以装换成其他数据类型吗?例如整型。 4. Java语言中,选择语句有哪两种形式? 5. switch语句中,(语句序列)一定要有break语句吗? 6. break语句和continue语句各有哪两种形式? 7. 对象的三大要素? 8. 定义类的修饰符有哪些?各自的特点什么? 9. 什么是静态变量?什么是静态方法?各自有什么特点? 10. 什么是抽象类?什么是抽象方法?各自有什么特点? 11. 什么是最终类?什么是最终变量?什么是最终方法? 12. 异常的处理方法有哪些? 13. 进程和线程有什么区别,Java是如何实现多线程的? 14. 简述线程的生命周期,,重点注意线程阻塞的几种情况,以及如何重回就绪状态? 读程序 1. public class A extends B { public int d; public void tryVariables() { System.out.println(a); System.out.println(getB()); System.out.println(c); } } class B1 extends A1 { int x=100; void printb() { super.x = super.x +10 ; System.out.println(\"super.x= \" + super.x + \" x= \" + x); } } public class Exam4_4Test { public static void main(String[] args) { A a1 = new A(); 第 35 页 共 37 页 a1.setx(4); a1.printa(); B b1 = new B(); b1.printb(); b1.printa(); b1.setx(6); b1.printb(); b1.printa(); a1.printa(); } } 2. class Meal { Meal() { System.out.println(\"Meal()\"); } } class Bread { Bread() { System.out.println(\"Bread()\"); } } class Cheese { Cheese() { System.out.println(\"Cheese()\"); } } class Lettuce { Lettuce() { System.out.println(\"Lettuce()\"); } } class Lunch extends Meal { Lunch() {System.out.println(\"Lunch()\");} } class PortableLunch extends Lunch { PortableLunch() { System.out.println(\"PortableLunch()\"); } } public class Sandwich extends PortableLunch { Bread b = new Bread(); Cheese c = new Cheese(); Lettuce l = new Lettuce(); Sandwich(){System.out.println(\"Sandwich()\");} public static void main(String[] args) { new Sandwich(); } } 编程题 1. 编写程序,接受用户从键盘输入的三个数x,y,z从中选出最大和最小者,并变成实现. 2. 求出100以内的素数,并将这些书在屏幕上5个一行的显示出来。 3. 接受用户从键盘输入的两位整数,求两个数的最大公约数和最小公倍数,并输出。 第 36 页 共 37 页 4. 声明一个基类A,它只有一种非默认构造方法;声明A类的子类B,B具有默认方法及非 默认构造方法,并在B的构造方法中调用基类A的构造方法。 5. 声明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类, 并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么? 6. 编写一个多线程的程序实现如下功能:线程A和线程B分别在屏幕上显示信息“…… Start”后,调用wait等待;线程C开始调用sleep休眠一段时间,然后调用notify-all,使线程A和线程B继续运行。线程A和线程B恢复运行后输出信息“……end”后结束线程C在判断B和线程A结束后自己运行。 7. 实现一个数据单元,包括学号姓名两部分。编写两个线程,一个线程往数据单元中写, 另一个线程往出读。要求写一次就读一次。 以上题仅作参考大部分可在07电信的Java书中 第 37 页 共 37 页 因篇幅问题不能全部显示,请点此查看更多更全内容