zoukankan      html  css  js  c++  java
  • 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 午夜距离该日期时间的毫秒数

  • 相关阅读:
    210111做个期望值低的人
    error_1 springboot `com.mysql.jdbc.Driver'问题
    error_2 springboot mysql时区设置
    17_springboot Restful风格
    15_JSON springboot
    13_springboot文件上传
    12_springboot myBatis crud
    11_springboot JPA crud
    Swagger导出MarkDown
    Docker 使用中的一些问题
  • 原文地址:https://www.cnblogs.com/chenxihui/p/5418172.html
Copyright © 2011-2022 走看看