1609第一次月考详细解析

  • 格式:docx
  • 大小:159.07 KB
  • 文档页数:35

1.(单选题)下列数组声明语句中,错误的是:()。 A.int[] arr = new int[]{}; B.int[] arr = new int[];//缺少数组长度 C.int[] arr = {}; D.int[][] arr = new int[2][]; 正确答案:B 2.(单选)class Card{}下列不属于Card类构造方法的是:() A.Card(){} B.public Card(){} C.public void Card(){}//构造方法没有返回值,但也不能写void D.private Card(){} 正确答案:C 3.(单选)下面不属于Java语言特点的是: A.平台无关 B.面向对象 C.支持指针类型//不是java的特点,是c语言的 D.垃圾回收机制 正确答案:C 4.(单选)下列选项中的类,能正确实现java.lang.Runnable接口和java.lang.Clonable接口的是()。 A.public class Session implements Runnable, Clonable { public void run(); //实现接口,要重写接口的抽象方法 public Object clone(); } B.public class Session implements Runnable, implements Clonable {//写一个implements即可 public void run() { / do something */ } public Object clone() { / make a copy */ } } C.public class Session implements Runnable, Clonable { public void run() { / do something */ } public Object clone() { /* make a copy */ } } D.public class Session extends Runnable, Clonable { //接口不是用来继承的 public void run() ; public Object clone(); } 正确答案:C 5.(单选)下列属于不合法Java标识符的是()。 // java 标识符命名规范: 字母、数字、$、_(下划线),不可用数字开头,不能是java 的关键字 A._mem B.12a//不能以数字开头 C.M12 D.$12 正确答案:B 6.(单选)下列Java标识符,错误的是() A._sys_varl B.$change C.User_name D.1_file//不能以数字开头 正确答案:D 7.(单选)Java程序的执行过程中用到一套JDK工具,其中javac.exe是指()。

A.Java语言编译器 B.Java字节码解释器 C.Java文档生成器 D.Java类分解器 正确答案:A 8.(单选)运行下列代码: int[] oneArr = { 2, 11, 26, 27, 37, 44, 48, 60 }; int[] twoArr = { 19, 35, 49, 55, 58, 75, 83, 84, 91, 93 }; int[] threeArr = new int[oneArr.length + twoArr.length]; int p = 0, q = 0; while (p < oneArr.length && q < twoArr.length) { threeArr[p + q] = oneArr[p] < twoArr[q] ? oneArr[p++] : twoArr[q++]; } if (p < oneArr.length) { System.arraycopy(oneArr, p, threeArr, p + q, oneArr.length - p); } else if (q < twoArr.length) { System.arraycopy(twoArr, q, threeArr, p + q, twoArr.length - q); } System.out.println(Arrays.toString(threeArr)); 输出的结果是:()。 A.[2,11,26,27,37,44,48,60,19,35,49,55,58,75,83,84,91,93]; B.[2,11,19,26,27,35,37,44,48,49,55,58,60,75,83,84,91,93]; C.[19,35,49,55,58,75,83,84,91,93,2,11,26,27,37,44,48,60]; D.[2,19,11,35,26,49,27,55,37,58,44,75,48,83,60,84,91,93]; 正确答案:B //代码太多了,自己在eclipse运行一下,用debug调试一下,每次数组的变化,其实就是将两个数组按从小到大的顺序合并 9.(单选)A类中有一个方法: protected int print(String str){}, B类继承A类, 以下方法能在B类中重写A类中print()方法的是: ()。 //考大家重写: 重写原则:两同两小一大 重写要求子类中的返回值类型小于或者等于父类型,有一个特殊情况,如果父类的返回值类型是基本类型或者是void的,子类必须与父类保持一致

A.public int print(String str){} B.private int print(String str){} C.private void print(String str){} D.public void print(String str){} 正确答案:A 10.(单选)下列代码的输出结果是()。 boolean b=true?false:true==true?false:true; System.out.println(b); //三目运算符结构:boolean表达式?表达式1:表达式2 true?false:true==true?false:true; 选择表达式1 :false A.true B.false C.null D.空字符串 正确答案:B 11.(单选)下列赋值语句中,正确的是()。 A.byte b1 = 10, b2 = 20; byte b=b1+b2; //需要强转,byte b = (byte)(b1+b2) B.byte b1 = 10, b2 = 20; byte b=~b1; //需要强转, byte b=(byte)(~b1); C.byte b1 = 10, b2 = 20; byte b=b1>>1; //需要强转byte b=(byte)(b1>>1); D.byte b1 = 10; byte b=++b1; 正确答案:D 12.(单选)类Super及Sub定义如下: public class Super { private void f() { System.out.println("Super.f()"); } public void g() { f(); } public void k() { f(); } } public class Sub extends Super { private void f() { System.out.println("Sub.f()"); } public void k() { f(); } } 运行下列语句: Super obj = new Sub(); //创建了一个obj的引用变量指向Sub对象,类型为Super obj.g(); //能点出来什么看类型,所以这时调的g方法应该是访问Super的g()方法,g方法里调f()方法,父类的f()方法为private为不可重写。 虽然子类中看上去重写了,其实是两个无关f()方法,只是方法名而已。 在多态调用的时候,只会直接找父类的f()方法. 所以调用f()方法时,实际是调用父类的private。输出:Super.f() obj.k(); //调k()方法,子类重写后的版本,它为一个公共方法,该公共方法再调用本类的私有方法.

输出:Sub.f() 输出的结果是:()。 A.Sub.f() Sub.f() B.Sub.f() Super.f() C.Super.f() Sub.f() D.Super.f() Super.f() 正确答案:C 13. (单选)关于下列代码说法正确的是: class ClassA { public int numberOfinstances; protected ClassA(int numberOfinstances) { this.numberOfinstances = numberOfinstances; } }