2023年JAVA语言程序设计复习题及答案.doc
JAVA语言程序设计考试试题及部分答案一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是对的的,请将对的选项的标记写在题干后的括号内。 1下列语句序列执行后,k 的值是( B )。 int m=3, n=6, k=0; while( (m+) < ( - n) ) +k; A) 0 B) 1 C) 2 D) 32设 i、j 为int型变量名,a 为int型数组名,以下选项中,对的的赋值语句是( B )。 A) i = i + 2 B) a0 = 7; C) i+ - -j; D) a(0) = 66;3Java语言的类间的继承关系是( B )。 A) 多重的 B) 单重的 C) 线程的 D) 不能继承4设有定义 int i = 6 ;,则执行以下语句后,i 的值为( C )。 i += i - 1; A) 10 B) 121 C) 11 D) 1005下列选项中,用于在定义子类时声明父类名的关键字是( C )。 A)interface B) package C) extends D) class6若已定义 byte x= 11,22,33,-66 ; 其中0k3,则对x数组元素错误的引用是( C )。 A) x5-3 B) xk C) xk+5 D) x07下列语句序列执行后,ch1 的值是( B )。 char ch1='A',ch2='W' if(ch1 + 2 < ch2 ) +ch1; A) 'A' B) 'B' C) 'C' D) B8下列语句序列执行后,i 的值是( D )。 int i=8, j=16; if( i-1 > j ) i-; else j-; A) 15 B) 16 C) 7 D) 89下列语句序列执行后,k 的值是( C )。 int i=10, j=18, k=30; switch( j - i ) case 8 : k+; case 9 : k+=2; case 10: k+=3; default : k/=j; A) 31 B) 32 C) 2 D) 3310下面语句执行后,i 的值是( B )。 for( int i=0, j=1; j < 5; j+=3 ) i=i+j; A) 4 B) 5 C) 6 D) 7 11设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是( B )。 A) x > y | x > z B) x != y C) z > ( y + x ) D) x < y & ! ( x < z )12下列语句序列执行后,i的值是( D )。 int i=16; do i/=2; while( i > 3 ); A) 16 B) 8 C) 4 D) 213以下由 for 语句构成的循环执行的次数是( B )。 for ( int i = 0; true ; i+) ; A) 有语法错,不能执行 B) 无限次 C) 执行1次 D) 一次也不执行14定义类头时能使用的修饰符是(C )。 A) private B) static C) abstract D) protected15设int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已对的定义并赋值, 对的的switch语句是D )。 A) switch (x + y) B) switch ( ch + 1 ) . . C) switch ch D) switch ( a + b ); . . 16. 下列最终属性 i 的定义中,对的的是( )。 A) static final int i=100; B) final int i=1.2; C) final i='w' D) final char i;17. 下列类定义中,不对的的是(C )。 A) class x . B) class x extends y . C) static class x implements y1,y2 . D) public class x extends Applet . 18. 设 x、 y为已定义的类名,下列声明x类的对象x1的语句中对的的是( )。 A) static x x1; B) public x x1=new x(int 123); C) y x1; D) x x1=x( );19. 设 i、j、k 为类 x 中定义的 int 型变量名,下列类 x 的构造函数中不对的的是(B )。 A) x( int m) . B) void x( int m) . C) x( int m, int n) . D) x( int h,int m,int n) . 20. 下列方法定义中,对的的是( A )。 A) int x( ) char ch='a' return (int)ch; B) void x( ) .return true; C) int x( ) .return true; D) int x( int a, b) return a+b; 21. 用于定义类成员的访问控制权的一组关键字是( D )。 A) class, float, double, public B) float, boolean, int, long C) char, extends, float, double D) public, private, protected 22. 不能构成循环的语句是( C )。 A) for 语句 B) while 语句 C) switch 语句 D) do_while 语句23. 下列程序段执行后 b3 的结果是( D )。 boolean b1=true, b2, b3; 24= b1 ? b1 : b2; A) 0 B) 1 C) true D) false25 下面数据结构中,属于非线性的是( B )。 A) 线性表 B) 树 C) 队列 D) 堆栈11. 设有定义 int i=123; long j=456; 下面赋值不对的的语句是( D )。 A) j=i; B) j=(long)i; C) i=(int)j; D) i=j;二、填空题:(每空1分) 1. 构造函数_没_有返回值。 2. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float和 _ double _两种具体类型。 3. 创建类对象的运算符是_ new。 4. 当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是_n%13=0_ 。 5. 在Java语言中,所有的数组都有一个lenght属性,这个属性存储了该数组的_元素个数。 6. 定义类就是定义一种抽象的_父类_,它是所有具有一定共性的对象的抽象描述。 7. 在Java语言中,使用_平台无关_、_java虚拟机_等技术,实现软件重用。 8. 表达式3/6 * 5的计算结果是_0_ 。 9.下面是一个类的定义: public class _int Myclass_ int x, y; Myclass ( int i, _=0_) / 构造函数 x=i; y=j; 10.下面是一个Java Application 的主类的定义,其功能是输出所有命令行参数。 import java.io.*; public class MyClass public static void main(String args ) if( args.length !=_0_) for(int i=0; i < args.length; i+) System.out.println(_"i="+i_); else System.out.println(没有命令行参数); 11下面是一个小程序的主类myprogram的定义, 其中A、B是该主类所在源程序中已定义的另两个类的类名: import java awt.*; import java applet.*; public class myprogram extends Applet/定义小程序的主类 A a; B b; public _ myprogram _ init( ) a=new A( ); b=_new_ B( ); 12. Java的复合数据类型有 : 类、数组和_接口_等。 Java的简朴数据类型有 : 数值类型(整形和浮点类型),自负类型和布尔类型13. 表达式3/6 * 5的计算结果是_0_ 。14.定义初值为10的10次方的长整型变量 lvar 的语句是:_long lvar=1*e10_。15. 顺序结构、分支结构(或称选择结构)、_循环结构_是结构化程序设计的三种基本流程控制结构。16. 以下方法 m 的功能是求两参数之积的整数部分。 int m ( float x, float y ) _k=(int)x*y_; 17. Java 源程序文献编译后产生的文献称为_字节码_文献,其扩展名为 _.class_ 。 18Java 和 c+都是面向对象的程序设计语言。三、程序分析:(每题4分) 1. 下面是一个排序的程序: import java.io.*; public class Test56_Sort public static void main(String args ) int a=42,99,5,63,95,36,2,69,200,96; System.out.println(排序前的数据序列:); ShowArray(a); Sort(a); System.out.println(排序后的数据序列:); ShowArray(a); public static void Sort(int x) int w; for(int i=1; i<x.length; i+) for(int j=0; j<x.length-1; j+) if(xj>xj+1) w=xj; xj=xj+1; xj+1=w; /* if(i=1|i=2) ShowArray(x); if(i=2) break; */ public static void ShowArray(int b) for(int i=0; i<b.length; i+) System.out.print("bi"+i+"=" +bi); System.out.println( ); 问题: 假如将方法Sort( )中的一对注释符(/* */)去掉,程序输出的结果是什么? 排序前的数据序列:b0=42b1=99b2=5b3=63b4=95b5=36b6=2b7=69b8=200b9=96b0=42b1=5b2=63b3=95b4=36b5=2b6=69b7=99b8=96b9=200b0=5b1=42b2=63b3=36b4=2b5=69b6=95b7=96b8=99b9=200排序后的数据序列:b0=5b1=42b2=63b3=36b4=2b5=69b6=95b7=96b8=99b9=2002. 请写下程序的输出结果: public class Test52 String str1="Hello, Java world! t" String str2="Hello, students!" ; public static void main(String args) System.out.print(str1); System.out.println(str2); 输出结果:3. 请写下程序的输出结果:public class T2_4 public static void main(String args) int i,j; char c='*' for(i=0;i<5;i+) for(j=0;j<=i;j+) System.out.print("* "); System.out.println(); 输出结果:4、请写下程序的输出结果: public class ex2_2 public static void main (String args ) int x , y ; byte b = 6; float z = 1.234f ; double w = 1.23; boolean flag; x = 12 ; y = 300; flag=x>y; System.out.println("x>y="+flag); flag=z>w; System.out.println("z>w="+flag); 四、问答题:(每题5分,) 1. Java的接口和C+的虚类的相同和不同处。 由于Java不支持多继承,而有也许某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足规定。与继承相比,接口有更高的灵活性,由于接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是public.一个类可以实现多个接口。 2. 垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c+程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低档别的线程运营,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 3,谈谈final, finally, finalize的区别。 Final修饰符(关键字)假如一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 Finally再异常解决时提供 finally 块来执行任何清除操作。假如抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(假如有的话)。 Finalize方法名。Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在拟定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 4,数组有没有length()这个方法? String有没有length()这个方法?举例说明使用方法? 数组没有length()这个方法,有length的属性。 String有有length()这个方法。 5. Java中的异常解决机制的简朴原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表达为一个异常。违反语义规则涉及2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发 NullPointerException.另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 五、程序设计:(每题11分,共33分) 1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应当截为"我AB",输入"我ABC汉DEF",6,应当输出为"我ABC"而不是"我ABC+汉的半个"。 2、编程求解:所有两位整数能被3整除的数的和,以及不能被3整除的数的各位数字之和。 3、设计一个程序求解e的值。精度达成1.0e-6, 4、请设计一个对N个数进行排序的程序一、选择题(每道题只有一个对的答案,每小题2分,共30分)15道题1、关于Java语言叙述错误的是:( C ) AJava语言具有跨平台性 BJava是一种面向对象的语言 CJava语言中的类可以多继承 DJava的垃圾收集机制自动回收程序已不再使用的对象2、以下叙述对的的是:( B )的确台a A构造方法必须是public方法 Bmain方法必须是public方法 CJava应用程序的文献名可以是任意的 D构造方法应当声明为void类型3、关于Java中数据类型叙述对的的是:( B ) A、整型数据在不同平台下长度不同 Bboolean类型数据只有2个值,true和false C数组属于简朴数据类型 DJava中的指针类型和C语言的同样4、设 int x=1,float y=2,则表达式 x / y的值是:( D ) A0 B1 C2 D以上都不是5、以下语句有语法错的是:( A ) Aint x=1;y=2;z=3 Bfor (int x=10,y=0;x>0;x+); Cwhile (x>5); Dfor(; ;);6、关于类和对象的叙述对的的是:( A ) AJava的类分为两大部分:系统定义的类和用户自定义的类 B类的静态属性和全局变量的概念完全同样,只是表达形式不同 C类的成员至少有一个属性和一个方法 D类是对象的实例化7、以下有关构造方法的说法,对的的是:( A ) A一个类的构造方法可以有多个 B构造方法在类定义时被调用 C构造方法只能由对象中的其它方法调用 D构造方法可以和类同名,也可以和类名不同8、以下有关类的继承的叙述中,对的的是:( D ) A子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性 B子类只能继承父类的方法,不能继承父类的属性 C子类只能继承父类的非私有属性,不能继承父类的方法 D子类不能继承父类的私有属性9、下列属于容器的组件有:( B ) AJButton BJPane CCanvas DJTextArea10、void 的含义:( C ) A方法体为空 B定义的方法没有形参 C定义的方法没有返回值 D方法的返回值不能参与算术运算11、关于Java中异常的叙述对的的是:( D ) A异常是程序编写过程中代码的语法错误 B异常是程序编写过程中代码的逻辑错误 C异常出现后程序的运营立即中止 D异常是可以捕获和解决的12、所有的异常类皆继承哪一个类?( C ) Ajava.io.Exception Bjava.lang.Throwable Cjava.lang.Exception Djava.lang.Error13、下面哪个不是java语言中的关键字?( B ) Along Bsizeof Cinstanceof Dconst14、为实现进程之间的通信,需要使用下列那种流才合适?(D) AData stream BFile stream CBuffered stream DPiped stream15、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(D) AActionListener BMouseListener CMouseMotionListern DItemListener二、填空题(每空1分,共20分)1、面向对象程序设计所具有的基本特性是:_抽象性_,_封装性_,_继承性_,_多态性_2、数组x定义如下 int x =new int32 则 x.length 的值为_3_, x0.length 的值为_2_。3、Java中实现多线程一般使用两种方法,一是_继承Thread类_,二是_实现Runnable方法_4、Java的图形用户界面设计中,有很多布局管理器用来摆放组件的位置,一般用到的布局管理器有(列出四种即可)_FlowLayout_,_GridLayout_,_BorderLayout_,_CardLayout_5、Applet常用的方法是:_init()_、_run()_、_stop()_和destroy()。三、阅读程序,写出程序的输出结果(每题5分,共20分)1、class A private int privateVar; A(int _privateVar) privateVar=_privateVar;boolean isEqualTo(A anotherA) if(this.privateVar = anotherA.privateVar) return true; else return false; public class B public static void main(String args) A a = new A(1); A b = new A(2); System.out.println(a.isEqualTo(b); 程序的输出结果为:_false_ 2、class A double f(double x, double y) return x * y; class B extends A double f(double x, double y) return x + y; public class Test public static void main(String args) B obj = new B(); System.out.println("The program output is " + obj.f(4, 6); 程序的输出结果为:_ The program output is 10_3、public class Unchecked public static void main(String args) try method(); catch (Exception e) System.out.println("A"); finally System.out.println("B"); static void method() try wrench(); System.out.println("C"); catch (ArithmeticException e) System.out.println("D"); finally System.out.println("E"); System.out.println("F"); static void wrench() throw new NullPointerException(); 程序的输出结果为:EAB4、public class Test public static void main(String args) int x; int a = 0, 0, 0, 0, 0, 0 ; calculate(a, a5); System.out.println("the value of a0 is " + a0); System.out.println("the value is a5 is " + a5); static int calculate(int x, int y) for (int i = 1; i < x.length; i+) if (y < x.length) xi = xi - 1 + 1; return x0; 程序的输出结果为:the value of a0 is 0the value is a5 is 51. 下面哪些是short型的取值范围 CA. -27 27-1B. 0 216-1C. -215 215-1D. -231 231-12. 下面哪些是合法的标记符 ABEA. $personsB. TwoUsersC. *pointD. thisE. _endline3. 哪些是将一个十六进制值赋值给一个long型变量 DA. long number = 345L;B. long number = 0345;C. long number = 0345L;D. long number = 0x345L;4. 下面的哪些程序片断也许导致错误。 BDA. String s = "Gone with the wind" String t = " good " String k = s + t;B. String s = "Gone with the wind" String t; t = s3 + "one"C. String s = "Gone with the wind" String standard = s.toUpperCase();D. String s = "home directory" String t = s - "directory"5. 在/ point x处的哪些声明是合法的 DE class Person private int a; public int change(int m) return m; public class Teacher extends Person public int b; public static void main(String arg) Person p = new Person(); Teacher t = new Teacher(); int i; / point x A. i = m;B. i = b;C. i = p.a;D. i = p.change(30);E. i = t.b;6. 当Frame的大小被改变时, Frame中的按钮的位置也也许被改变,请问此时使用的是什么布局管理器 BA. BorderLayoutB. FlowLayoutC. CardLayoutD. GridLayout7. 给出下面的代码片断 1 public void create() 2 Vector myVect; 3 myVect = new Vector(); 4 下面的哪些陈述是对的的? ADEA. 第二行的声明不会为变量myVect分派内存空间。 /指的是堆空间,只是在栈 中分派;这里不用较真.自己理解就好;B. 第二行的声明分派一个到Vector对象的引用的内存空间。C. 第二行语句创建一个Vector类对象。D. 第三行语句创建一个Vector类对象。E. 第三行语句为一个Vector类对象分派内存空间。/分派栈空间,相称于指针,但是不分派"到Vector对象的引用的空间"选项二的意思是分派了堆空间;8. 下面的哪些答案可以用以表达八进制值8? AA. 010B. 0x10C. 08D. 0x89. 哪些不是Java关键字 ABA. TRUEB. sizeofC. constD. superE. void10. 下面的哪些叙述为真。 ADA. equals()方法鉴定引用值是否指向同一对象。 /不说是谁的就是默认的B. = 操作符鉴定两个分立的对象的内容和类型是否一致。C. equals()方法只有在两个对象的内容一致时返回true。D. 类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。 /当两个独立的对象的内容和类型一致;11. 下面关于继承的哪些叙述是对的的。 ADA. 在java中只允许单一继承。B. 在java中一个类只能实现一个接口。C. 在java中一个类不能同时继承一个类和实现一个接口。D. java的单一继承使代码更可靠。12. 第十行的声明将调用哪些方法. D 1 class Person 2 public void printValue(int i, int j) 3 public void printValue(int i) 4 5 public class Teacher extends Person 6 public void printValue() 7 public void printValue(int i) 8 public static void main(String args) 9 Person t = new Teacher(); 10 t.printValue(10); 11 12 A. 第2行的方法B. 第3行的方法C. 第6行的方法D. 第7行的方法13. 下面哪些不是java的原始数据类型 BCA. shortB. BooleanC. unitD. float14. 下面的哪些关键字通常用来对对象的加锁,该标记使得对对象的访问是排他的? BA. transientB. synchronizedC. serializeD. static15. main()方法的返回类型是什么? BA. intB. voidC. booleanD. static16. 给出以下关于一个使用适当的字符间距的字体的TextField的表达式 TextField t = new TextField("they are good",40);/40指的是像素 哪些叙述是对的? DA. 被显示的字符串可以使用多种字体。B. 一行中最大的字符数是40C. 显示的宽度正好是40个字符宽。D. 用户可以编辑字符。17. 关于垃圾收集的哪些叙述是对的? BA. 程序开发者必须自己创建一个线程进行内存释放的工作。B. 垃圾收集将检查并释放不再使用的内存。C. 垃圾收集允许程序开发者明确指定并立即释放该内存。D. 垃圾收集可以在盼望的时间释放被java对象使用的内存。18. 给出下面的代码 1 public class Test 2 int m, n; 3 public Test() 4 public Test(int a) m=a;