java阶段考 带答案.doc_第1页
java阶段考 带答案.doc_第2页
java阶段考 带答案.doc_第3页
java阶段考 带答案.doc_第4页
java阶段考 带答案.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安卓16班java阶段考试1、 选择题(15分)1、0.6332的数据类型是( B )A float B double C Float D Double2、 下面的方法,当i输入为2的时候返回值是多少?( D ) public static int getValue(int i) int result = 0; switch (i) case 1: result = result + i; case 2: result = result + i * 2; case 3: result = result + i * 3; return result; A、0 B 、2 C 、4 D、103、下面代码的运行结果为:( C )import java.io.*;import java.util.*;public class foo public static void main (String args) String s; System.out.println(s= + s); A代码得到编译,并输出“s=”B代码得到编译,并输出“s=null”C由于String s没有初始化,代码不能编译通过D代码得到编译,但捕获到NullPointException异常4、(单选题)程序执行的结果是:( B )。publicclassPointinty =7;publicvoidstep(inty) y += y;System.out.println(y);publicstaticvoidmain(String args) Point p =newPoint();p.step(10);A.14 B.20 C.10 D.175、下列说法正确的有( C )A 类中的构造方法不可省略B 构造方法必须与类同名,但方法不能与类同名C 构造方法在一个对象被创建时执行D一个类只能定义一个构造方法6、下面关于数组的声明语句中,有编译错误的是:( B )。A.int arr = new int1,2,3;B.int arr = null;arr = 1,2,3,4,5;C.int arr = new int1,2,3,4,5,6D.int arr = new int2;7、下列说法正确的是:( B )A)抽象类可以用new操作符实例化 B)接口不能用new操作符实例化C)抽象类所有的变量必须是public static finalD)抽象类所有方法必须是public abstract8、下面哪个流类属于面向字符的输入流( D )ABufferedWriter BFileInputStream CObjectInputStreamD InputStreamReader9、下列代码编译和运行的结果是:( C )。public class D public static void main(String args) throws Exception Thread.sleep(3000); System.out.println(sleep); A.编译错误 B.抛出运行时异常C.输出:sleep D.代码正常运行,但是无输出10、 下列代码输出的结果是:( D )String name=NASDAQ欢迎你;String newName=name.substring(4,7);System.out.println(newName);A、DAQ B、SDAQ 欢 C、AQ 欢迎 D、AQ 欢11、下列代码编译和运行的结果是:( A )。publicclassFoo publicstaticvoidtest(String str) intcheck =3;if(check = str.length() System.out.print(str.charAt(check -=1) +, );elseSystem.out.print(str.charAt(0) +, );publicstaticvoidmain(String args) test(four);test(tea);test(to);A. f, a, t, B.f, t, t, C.编译失败 D.f,e,t,12、publicclassTetromino protectedintmove(intx) return0;classTextendsTetromino 在处填入选项中的代码,使T类没有编译错误的是:(AC)(多选)A. public int move(int x) return 0; B.private int move(int x) return 0; C.private int move(long x) return 0; D.protected long move(int x) return 0; 正确答案:AC解析:本题考查方法的重写和重载语法。 子类可以重写(覆盖)父类的方法。方法的重写要遵循“两同两小一大”规则,“两同”即方法名相同,形参列表相同;“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;“一大”指的是子类方法的访问权限应比父类方法的访问范围更大或相等。 在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载。 选项A,符合重写的定义,A选项正确。 选项B,不符合重写也不符合重载的语法,B选项错误。 选项C,符合重载的语法,子类T继承父类Tetromino的 protected int move(int x) 方法,与C选择属于重载,C选择正确。 选项D,不符合重写也不符合重载的语法,D选项错误。13、(单选题)在 Java 中,关于 final 关键字的说法正确的是:( C )。A.如果修饰局部变量,必须定义时初始化B.如果修饰类,则该类只能被一个子类继承C.如果修饰方法,则该方法不能在子类中被覆盖D.如果修饰方法,则该方法所在的类不能被继承正确答案:C解析:本题考查final关键字的用法。final关键字的用法如下: 1.final关键字修饰的类不可以被继承。 2.final关键字修饰的方法不可以在子类中被重写。 3.final关键字修饰成员变量,意为初始化后不可改变。该成员变量必需在初始化时赋值,对象一旦创建即不可改变。可以在声明时初始化或在构造方法中进行初始化。14、关于下列代码说法正确的是:( B)。publicclassStorm publicvoidfind() publicString find() returnfind;publicdoublefind(intx) return2.0;A.无编译错误 B.代码 public String find() 行,出现编译错误C.代码 public double find(int x) 行,出现编译错误D.代码 return find;行处出现编译错误正确答案:B解析:本题考查方法重载。 在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)。编译器在编译时会根据其参数的不同,绑定到不同的方法。在这里需要强调的是和返回值无关。 本题中,方法 public void find() 和 方法public String find() 参数列表相同,不符合方法重载的定义,会在两个方法声明处出现编译错误。15、下列代码运行的结果是:( B )。publicclassBoxer Integer i;intx;publicBoxer(inty) x = i + y;System.out.println(x);publicstaticvoidmain(String args) newBoxer(newInteger(4);A.输出:4 B.在运行时抛出NullPointerException异常C.在运行时抛出NumberFormatException异常D.在运行时抛出IllegalStateException异常正确答案:B解析:本题考查NullPointerException异常。当应用程序试图在需要对象的地方使用 null 时,抛出该异常。 本题中,在编译代码“ x = i + y;”时,要对i进行自动拆箱,即相当于代码“ x = Value() + y;,但执行时属性i的值为null,因此抛出空指针异常。2、 填空题(10分)1、 Oop是面向_对象_的语言2、 Java的三大特性继承、封装、多态3、 构造方法是一种特殊的成员方法,是用来_初始化对象_ 的函数,方法名与_类名_相同。4、 实现多线程的两种方式_继承Thread类_和_实现Runnable接口_。5、 一般Java程序的类体由两部分组成:一部分是_属性_,另一部分是_方法_。6、 Java语言规定标识符(变量名)由字母、下划线、美元符号和数字组成,并且第一个字符不能是_数字_。7、如果子类构造方法中既没有(看到)调用父类构造方法,而父类中有没有无参数的构造方法,则_报错_8、对于频繁修改字符串内容的地方,通常使用_StringBuffer_类来完成。9、可修复的异常的父类是_Exception_10、多态的三个必要条件是继承、重写、对象转型三、问答题(15分)1、什么是面向对象,说出你对面向对象的理解2、错误和异常的区别异常:程序在编译和运行时出现的错误我们统一称之为异常,它是(虚拟机)通知你的一种方式,让你知道,你已经犯了个错误,现在有一个机会来修改它。错误:它指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况。”,错误是VM的一个故障(虽然它可以是任何系统级的服务)。所以,错误是很难处理的,一般的开发人员(当然不是你)是无法处理这些错误的。比如内存溢出;3、sleep与wait的区别(1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。(2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。Wait调用notify/notifyAll唤醒等待池中的所有线程。sleep可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断(3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常4、set和list的区别Set各元素之间没有指定的顺序,不允许有重复的元素, List各元素之间有指定的顺序,允许有重复的元素 5、 是否可以继承String类?为什么?java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类四、程序阅读题(10分)1、public class D extends B private String name = d; public D() t(); p(); public void t() System.out.println(D t name: + name); public void p() System.out.println(D p name: + name); public static void main(String args) new D(); class B private String name = b; public B() t(); p(); public void t() System.out.println(B t name: + name); public void p() System.out.println(B p name: + name); 运行结果为:D t name: nullD p name: nullD t name: dD p name: d_2、class HelloA public HelloA() System.out.println(HelloA); System.out.println(Im A class); static System.out.println(static A); public class HelloB extends HelloA public HelloB() System.out.println(HelloB); System.out.println(Im B class); static System.out.println(static B); public static void main(String args) new HelloB(); 运行结果:static A (换行) static B(换行) Im A class(换行)HelloA(换行) Im B class(换行) HelloB(换行)(对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。)五、上机题(50分)1、 (1)(10)已知一个数列:f(0)=1;f(1)=4;f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10),(要求:用递归方法来)public class lianx1 public static void main(String args) System.out.println(f(10);/ 公式为f(n+2)=2*f(n+1)+f(n),但是求f(10),此时公式就变成f(10)=2*f(10-1)+f(10-2)此时n=8,/ 公式变为f(n)=2*f(n-1)+f(n-2),以此递推public static int f(int n) if (n = 0) return 1; else if (n = 1) return 4; elsereturn 2 * f(n - 1) + f(n - 2);(2) (10)已知一个数列:f(20)=1;f(21)=4;f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10),(要求:用递归方法来)public class lianx2 public static void main(String args) System.out.println(f(10);public static int f( int n)/虽然公式是f(n+2)=2*f(n+1)+f(n), f(10)=f(12)-2*f(11)/需要倒着递推,f(n)=f(n+2)-2*f(n+1)if(n=20)return 1;else if(n=21)return 4;else return f(n+2)-2*f(n+1);2、 (10)有13个人围成一圈,顺序排号,从第3个开始报数(从1到5报数),凡报到5的人退出圈子,下一个继续从1开始报,输出退出顺序。public class test3 public static void main(String args) int a = new int13;int b = new int5;int x = 3, N = 13, m = 13, y = 1;for (int n = 1; n =m) /当出圈人的下标超过剩余人数,当第三次时,i=14,此时还有11人在玩游戏,下标越界,i=i-m;/就将它重新赋值,减去现有人数,得到出圈人原来的下标System.out.println(ai);/第一次出的是7,下标为i=6,并没有执行上面的if,直接执行下面的for/输出出圈人数后,将7的位置重新给他后面的人,第二次出的是12,下标为i=10,也没有执行上面的if,/第三次出的是4,需要执行上面的if,再执行下面的,for (int j = i; j m-1; j+) /将出圈人的位置给他后面人,即左移一个位置。(但只是针对他后面的)aj = aj + 1;m-;/此时人就少了一个,m就减一个y+;/y表示循环游戏的次数,在此前赋值为1,出一个人就加一次 while (y 0) for (int i = 0; i hq.length; i+) hqi = i+1;/红球数组赋值for (int i = 0; i lq.length; i+) lqi = i+1;/蓝球数组赋值System.out.print(红球号码为:);int h = new int6;for (int i = 0; i 6; i+) int a = (int) (Math.random() * 33);if (hqa = 0) i-;continue;hi = hqa;hqa = 0;for (int i = 1; i 0; j-) if (hj hj - 1) int temp = hj - 1;hj - 1 = hj;hj = temp; elsecontinue;for (int i = 0; i h.length; i+) if (hi 10)System.out.print(0 + hi + );elseSystem.out.print(hi + );for (int i = 0; i 1; i+) System.out.print( + 蓝球号码为:);int b = (int) (Math.random() * 16);if (lqb 10) System.out.println(0 + lqb); elseSystem.out.println(lqb);s-; 方法二:容器public class Union_Lotto public static void main(String args) / TODO Auto-generated method stubwhile (true) System.out.println(请输入双色球组数:);Scanner input = new Scanner(System.in);int num = 0;try num = input.nextInt(); catch (InputMismatchException i) System.err.println(请再输一遍!);continue;List l = new LinkedList();List l1 = new LinkedList();List l2 = new LinkedList();while (num 0) System.out.print(红球:);for (int i = 1; i = 33; i+) l.add(i);for (int k = 1; k = 16; k+) l2.add(k);int a = 0;for (int j = 0; j 6; j+) a = (int) (Math.random() * l.size();l1.add(l.get(a);l.remove(a);f(l1, l2);l.clear();l1.clear();l2.clear();num-;System.out.println(是否再输入双色球组数?Y/N);String s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论