java第一阶段测试

一、选择题(35题 * 2分)
1. 下列代码编译和运行的结果是:C
 public static void main(String[] args) {
   String[] elements = { "for", "tea", "too" };
   String first = (elements.length > 0) ? elements[0] : null;
   System.out.println(first);
 }
A. 编译出错
B. 输出:tea
C. 输出:for
D. 输出:null

/*这里考到了三目运算符 ?前判断为真,执行表达式1,为假执行表达式2,很明显?前的判断为True.所以打印了数组第一个元素for*/

 

 

 



2. 请看下列代码:
  public static void main(String[] args) {
  Date d = new Date(0);
  String ds = "December 15, 2004";
  <插入代码1>
  try {
   d = df.parse(ds);
  } catch (ParseException e) {
   System.out.println("Unable to parse " + ds);
  }
  <插入代码2>
 }
在<插入代码1>处创建一个DateFormat对象,在<插入代码2>处给Date对象d加上一天,下列选项正确的是:B
A. DateFormat df= DateFormat.getDateFormat();
    d.setTime( (60 * 60 * 24) + d.getTime());

B. DateFormat df= DateFormat.getDateInstance();
    d.setTime( (1000 * 60 * 60 * 24) + d.getTime());

C. DateFormat df= DateFormat.getDateFormat();
    d.setLocalTime( (1000 * 60 * 60 * 24) + d.getLocalTime());

D. DateFormat df= DateFormat.getDateInstance();
    d.setLocalTime( (60 * 60 * 24) + d.getLocalTime());

/*这里考到了Calendar.getInstance();   方法 parse() 方法可解析一个日期时间字符串*/ Date.setTime();方法可设置时间

 


3. 请看下列代码:D
 public static void main(String[] args) {
  Calendar c = Calendar.getInstance();
  c.set(Calendar.YEAR, 2013);
  c.set(Calendar.MONTH, Calendar.FEBRUARY);
  c.set(Calendar.DATE, 28);
  <插入代码>
 }
在<插入代码>处填入将Calendar表示的日期转换为Date表示的日期:
A. Date d=c.getDate();

B. Date d=c.getCalendar();

C. Date d=c.getNow();

D. Date d=c.getTime();
知识点:Date.setTime();方法可设置时间

Date.getTime();方法可获取时间
4. 如下方法声明中,错误的是(C)。
A.public void say(){  
    System.out.print(“Hi”);
  }

B.public void say(){  
    System.out.print(“Hi”); return;
  }

C.public int say(){  
    System.out.print(“Hi”); return;
  }

D.public int say(){  
    System.out.print(“Hi”); return 0;
  }
这题的知识点是return关键字的用法,return可以用于结束语句,也可用于返回方法返回值类型,所以C不对,C中定义了int返回值类型,却没有return int类型
5.下列代码的输出结果是(D)。

public static void main(String[] args) {

    int[] one=new int[]{4,6,8};

    int[] two=new int[]{1,3,5,7,9};

    System.arraycopy(one, 1, two, 2, 2);

    System.out.println(Arrays.toString(two));

    }
A.[1, 3, 7, 4, 6]

B.[1, 3, 5, 7, 8]

C.[1, 3, 5, 6, 9]

D.[1, 3, 6, 8, 9]

考查知识点   System.arraycopy(原数组,复制原数组开始的下标,目标数组,复制到的目标数组下标,复制的原数组元素个数)

6.程序执行的结果是(C)。

  public class Test {

    String name="Tom";

    public Test(String name){

        this.name=name;

    }

    public static void main(String [] args){

        Test t = new Test("Jack");

        System.out.println(t.name);

    }

  }
A.null

B.Tom

C.Jack

D." "

Test中传入Jack

7. 下列代码编译和运行的结果是:D
public class A {
 void process() throws Exception {
  throw new Exception();
 }
 public static void main(String[] args) {
  A a = new B();
  a.process();
 }
}
class B extends A {
 void process() {
  System.out.println("B ");
 }
}
A. 输出:B

B. 无输出

C. B类的process方法处,出现编译错误

D. 代码a.process();行,出现编译错误

考查知识点:抛出的异常谁调用谁处理,a.process()调用了process()方法,却没有处理异常,所以在该行出现编译错误



8.运行下面程序:

public class Foo {

       public static void main(String[] args) {

              StringBuffer a=new StringBuffer("A");

              StringBuffer b=new StringBuffer("B");

              operator(a,b);

              System.out.println(a+","+b);

       }

       public static void operator(StringBuffer x,StringBuffer y){

              x.append(y);

              y=x;

       }

}
输出的结果是:(d)。
A. A,B

B. A,A

C. B,B

D. AB,B

考查知识点:apend()方法的应用

9.下列代码的输出结果是(b)。

abstract class Vehicle {

 public int speed() {

  return 0;

 }

}

class Car extends Vehicle {

 public int speed() {

  return 60;

 }

}

class RaceCar extends Car {

 public int speed() {

  return 150;

 }

}

public class TestCar {

 public static void main(String[] args) {

  RaceCar racer = new RaceCar();

  Car car = new RaceCar();

  Vehicle vehicle = new Car();

  System.out.println(racer.speed() + ", " + car.speed() + ", "

    + vehicle.speed());

 }

}


A.0, 0,0

B.150, 150, 60

C.150, 150, 150

D.抛出运行时异常

考查知识点:父类引用指向子类对象,调用子类中的方法

10.运行下面程序:

String[] strArr = { "aaa", "b", "cc" };

Arrays.sort(strArr, new Comparator<String>() {

    @Override

    public int compare(String o1, String o2) {
           return o1.length() - o2.length();
    }

});

System.out.println(Arrays.toString(strArr));

考查:Comparator比较器中重写compare方法对数组就行排序,o1.length()在前则升序,反之为降序
输出的结果是:(d
A. [aaa, b, cc]

B. [cc, b, aaa]

C. [b, cc, aaa]

D. [aaa, cc, b]

11. 下列代码的输出结果是:D
  String str1 = "WhatisJava";
  String str2 = "WhatisJava";
  System.out.print(str1.equals( str2));//true
  System.out.print(",");
  String str3 = new String("WhatisJava");
  System.out.println(str1.equals(str3));//true

A. true,false

B. false,false

C. false,true

D. true,true

考查:==、equals的应用 str2没有创建对象,而是直接使用了常量池中的str1的值

12. 执行下列语句:A
int a = 0x81fd0000; // 1000 0001 1111 1101 0000 0000 0000 0000

                                        // 0100 0000 1111 1110 1000 0000 0000 0000
                                        //4     0     f    e     8   0    0    0
a >>>= 1;//>>>= 1:后移1位
变量a的值为:()。

A. 0x40fe8000

B. 0xc0fe8000

C. 0x3fa0000

D. 0x7e02ffff

13.请看以下代码,关于这段代码描述正确的是:(C )

public class Account{

  private String cardId;

  public String getCardId() {

   return cardId;

  }

 public void setCardId (String cardId) {

  this. cardId = cardId;

 }

}

A. Account类符合JavaBean的规则看成一个类

B. Account类不符合JavaBean的规则,因为没有无参数构造方法

C. Account类不符合JavaBean的规则,因为没有实现序列化接口

D. Account类不符合JavaBean的规则,因为方法名getCardId应改为getcardId

JavaBean的原则:成员变量必须私有化

        有set、get方法

        必须序列化接口


14. class Card{}下列不属于Card类构造方法的是:(C
A. Card(){}

B. public Card(){}

C. public void Card(){}

D. private Card(){}
构造方法没有返回值

15. 关于下列代码说法不正确的是:A
10. interface Foo {
11. int bar();
12. }
13.
14. public class Beta {
15.
16. class A implements Foo {
17. public int bar() { return 1; }
18. }
19.
20. public int fubar( Foo foo) { return foo.bar(); }
21.
22. public void testFoo() {
23.
24. class A implements Foo {
25. public int bar() { return 2; }
26. }
27.
28. System.out.println( fubar( new A()));
29. }
30.
31. public static void main( String[] argv) {
32. new Beta().testFoo();
33. }
34. }

A. 编译错误

B. 运行代码输出:2

C. 如果删除16,17,18行,运行代码应然输出:2

D. 如果删除24,25,26行,运行代码输出:1

考查:方法的重写

16. 下列不属于Java运算符的是(B)。

A.!=

B.<>

C.>>

D.<<

17. 下面关于数组的声明语句中,有编译错误的是:(B)。//数组的声明和初始化必须同时进行

A. int[] arr = new int[]{1,2,3};

B. int[] arr = null;
    arr = {1,2,3,4,5};

C. int[][] arr = new int[][]{{1,2,3},{4,5},{6}}

D. int[][] arr = new int[2][];

18. 下列代码的输出结果是:D
 public static void main(String[] args) {
  Queue<String> queue = new LinkedList<String>();
  queue.offer("apple");
  queue.offer("orange");
  queue.offer("pear");
  queue.poll();
  queue.poll();
  queue.poll();
  System.out.println(queue.poll());
 }

A. apple

B. orange

C. pear

D. null

19. 请看下列程序的输出结果是:D
public class Item {
  private String desc;
  public String getDescription() {
    return desc;
  }
  public void setDescription(String d) {
    desc = d;
  }
  public static void modifyDesc(Item item, String desc) {
    item = new Item();
    item.setDescription(desc);
  }
  public static void main(String[] args) {
    Item it = new Item();
    it.setDescription("Gobstopper");
    Item it2 = new Item();
    it2.setDescription("Fizzylifting");
    modifyDesc(it, "Scrumdiddlyumptious");
    System.out.println(it.getDescription());
    System.out.println(it2.getDescription());
  }
}
A. Scrumdiddlyumptious
    Scrumdiddlyumptious

B. Scrumdiddlyumptious
    Fizzylifltng

C. Gobstopper
    Scrumdiddlyumptious

D. Gobstopper
    Fizzylifting

20.下列代码的输出结果是: ()。

public class A {

 public void info(){

  System.out.println("A info");

 }

}

public class B extends A{

 public void info(){

  System.out.println("B info");

 }

 public static void main(String[] args) {

  B b=new B();

  A a=b;

  a.info();

 }
}

A.
  B info
  A info

B.
  A info
  B info

C.
  A info

D.
  B info


21. 在Java语言中,字符串“Java程序员”在内存中所占用的字节数是:(D)。14/Java中默认Unicode编码

A. 10

B. 7

C. 13

D. 14

22. Java程序的执行过程中用到一套JDK工具,其中javac.exe是指()。

A.Java语言编译器

B.Java字节码解释器

C.Java文档生成器

D.Java类分解器

23. 下面的代码用于对数组arr实现冒泡排序:

for (int i = 0; i < arr.length - 1; i++) {
    boolean isSwap = false;
             空白处          
    if (!isSwap)
       break;

}

下列选项中,空白处可以填入的代码是:(?A)。
A. for (int j = arr.length - 1; j > i; j--) {
   if (arr[j] < arr[j - 1]) {
      int temp = arr[j];
      arr[j] = arr[j - 1];
      arr[j - 1] = temp;
      isSwap = true;
     }
}

B. for (int j = arr.length - 1; j > 0; j--) {
    if (arr[j] < arr[j - 1]) {
        int temp = arr[j];
        arr[j] = arr[j - 1];
        arr[j - 1] = temp;
        isSwap = true;
     }
  }

C. for (int j = i + 1; j< arr.length; j++) {
   if (arr[j] < arr[j - 1]) {
      int temp = arr[j];
      arr[j] = arr[j - 1];
      arr[j - 1] = temp;
      isSwap = true;
   }
}

D. for (int j = i; j< arr.length; j++) {
    if (arr[j] < arr[j - 1]) {
       int temp = arr[j];
       arr[j] = arr[j - 1];
       arr[j - 1] = temp;
       isSwap = true;
    }
}

24.下列代码的输出结果是(A)。

int j=0;

for(int i=0;i<100;i++){

    j=j++;

}

System.out.println(j);

A.0

B.99

C.100

D.101

25.下列代码的输出结果是()。

boolean b=true?false:true==true?false:true;

System.out.println(b);

A.true

B.false

C.null

D.空字符串

26.仔细分析下列代码,请指出错误的行()。

public class SomeThing{

       private String str;

        public int addOne(final int x){

            return ++x;

      }
    }

A.public class SomeThing

B.private String str;

C.public int addOne(final int x)

D.return ++x;

27.运行下面的程序:

     int a = 100;
     int b = 200;
     a = a + b;
     b = a - b;
     a = a - b;

     System.out.println("a=" + a + ", b=" + b);

输出的结果是:()。
A. a=100, b=300

B. a=100, b=200

C. a=200, b=100

D. a=300, b=200

28. 下列关于JVM说法,错误的是()。
A. JVM通过专门的线程实现内存的回收。

B. 使用java命令时,可以通过参数来设置分配JVM的内存大小。

C. JRE包括JVM及Java核心类库。

D. 目前主流版本JVM通过纯解释的方式运行Java字节码。

29. 请看下列代码C
public  class  Member{
  private Long userId;
  private String nickName;
  //以下是getter和sett方法
  ……
}
Main方法中的代码:
Member  m1=new Member();
m1.setUserId(new Long(100001));
m1.setNickName(“mick”);
Member  m2=new Member();
m2.setUserId(new Long(100001));
m2.setNickName(“mick”);
System.out.println(m1==m2);
System.out.println(m1.equals(m2));
控制台的输出结果是:

A. true
   false

B. false
   true

C. false
   false

D. true
   ture


30. List类的对象list中的元素为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],现在想返回该list对象的子集合[5,6,7,8],需要做的操作是:
A. list.subList(5, 8);B

B. list.subList(5, 9);

C. list.subList(4, 8);

D. list.subList(4, 9);

31. 请看下列代码:
public abstract class Shape {
 int x;
 int y;
 public abstract void draw();
 public void setAnchor(int x, int y) {
  this.x = x;
  this.y = y;
 }
}
下列选项中能正确使用Shape类的是:BD
A. public class Circle implements Shape {
   private int radius;
}

B. public abstract class Circle extends Shape {
   private int radius;
   public void draw() {/* code here */}
}

C. public class Circle extends Shape {
   private int radius;
   public void draw();//实体类不能有抽象方法
}

D. public class Circle extends Shape {
   private int radius;
   public void draw() {/* code here */}
}

32. 请看下列代码:
class One {
 public One foo() {
  return this;
 }
}
class Two extends One {
 public One foo() {
  return this;
 }
}
class Three extends Two {
 <插入代码>
}
下列选项中的代码,放置在<插入代码>处无编译错误的是:AD
A. public Two foo() { return this; }

B. public void foo() { }

C. public void foo() { return this; }

D. public One foo() { return this; }

33. 题目代码的功能为:输出每个字符在一个字符串中出现的次数(不区分大小写)。
String str = "ewrwqFrewqfsadfdsfdsfs";
str=str.toLowerCase();
int max_length = 0;
while (str.length() > 0) {
   《插入代码》
}BC


A. int length = str.length();
   char first=str.charAt(0);//e
   String strNew = str.replaceAll(String.valueOf(first), "");
   if (length>strNew.length()) {    //每次都拿到原来的字符串
      max_length = length - strNew.length();
      System.out.println(first+":"+max_length);
   }

B. int length = str.length();
   char first=str.charAt(0);
   String strNew = str.replaceAll(String.valueOf(first), "");
   if (length>strNew.length()) {
      max_length = length - strNew.length();
      str = strNew;
      System.out.println(first+":"+max_length);
   }

C. int length = str.length();
   String first = str.substring(0, 1);//前包括后不包括原则
   String strNew = str.replaceAll(first, "");
   if (length>strNew.length()) {
      max_length = length - strNew.length();
      str = strNew;
      System.out.println(first+":"+max_length);
   }

D. int length = str.length();
   String first = str.substring(0, 1);
   String strNew = str.replaceAll(first, "");
   if (length>strNew.length()) {
      max_length = length - strNew.length();
      System.out.println(first+":"+max_length);
   }

34. 下面的方法属于StringBuffer的是:(bcd)。//增 删 改 插
A. size//集合的方法

B. insert    

C. delete

D. length

35.查看如下代码:

class A {

    protected int method (int a,  int b) {

        return 0;

    }



下列选项中,可以在 A 的子类中使用的是(ABC)。
A. public int method (int a,  int b) { return 0; }

B. private byte method(double a,  int b) { return 0; }//私有方法,想咋写咋写

C. private int method(int a,  long b) { return 0; }//私有方法,想咋写咋写

D. public short method(int a,  int b) { return 0; }


二、简答题(10题 * 2分)
1.简述List、Set、Map的区别。

2.简述equals与==的区别。

3.简述java中垃圾回收机制的原理及应用。

4.请说出你所知道的实现线程同步的方法。

5.简述多线程创建方式。

6.简述冒泡排序的原理。

7.简述你学过的字节、字符流,列举并说明其流特点。

8.简述java中多态的实现机制。

9.请列举至少5种常见的Checked Exception。

10.简述4种数据权限访问的修饰符及其区别。


三、编程题(10分)
    已知JAVA API中有TimerTask定时器任务接口、Timer执行任务类。

    TimerTask接口中定义:
        abstract  void run()
        此计时器任务要执行的操作。
    
    Timer类中定义:
        void schedule(TimerTask task, Date firstTime, long period)
              安排指定的任务在指定的时间开始进行固定时长(毫秒)重复的任务执行。

    请编写一个模拟时钟的定时任务,定时任务将在10分钟后开始执行。
  
    }

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数

posted @ 2016-04-21 19:38  桜の  阅读(873)  评论(0编辑  收藏  举报