java基础知识测试,看你能得多少分?

1 前言

共有5道java基础知识的单项选择题,每道20分,共计100分。解析和答案在最后。
大家可以在评论区写出自己的测试分数。

2 试题

2.1 如下程序运行结果是什么?

class Parent {
    public Parent(String s) {
        System.out.print("B");
    }
}
public class Son extends Parent {
    public Son(String s) {
        System.out.print("D");
    }
    public static void main(String[] args) {
        new Son("");
        System.out.print("C");
    }
}
  • **A.**   BD
    
  • **B.**   DB
    
  • **C.**   BDC
    
  • **D.**  DBC
    
  • E. 编译失败

2.2 如下程序运行结果是什么?

public class Mixer {
    Mixer() {}
    Mixer(Mixer m) {
        m1 = m;
    }
    Mixer m1;
    public static void main(String[] args) {
        Mixer m2 = new Mixer();
        Mixer m3 = new Mixer(m2);
        m3.go();
        Mixer m4 = m3.m1;
        m4.go();
        Mixer m5 = m2.m1;
        m5.go();
    }
    void go() {
        System.out.print("hi ");
    }
}
  • **A.**   hi
    
  • **B.**   hi hi
    
  • **C.**   hi hi hi
    
  • **D.**  编译失败
    
  • **E.**  hi  接着一个异常
    
  • **F.**  hi hi  接着一个异常
    

2.3 下面哪一个选项的说法是正确的?

public class Operate{
    public static void main(String[] args) {
        String s = "";
        Boolean b1 = true;
        boolean b2 = false;
        if((b2=false) | (21%5)>2)
            s += "x";
        if(b1 || (b2=true)) {
            s += "y";
        if(b2 == true)
            s += "z";
        System.out.println(s);
        }
    }
}
  •  **A.**   编译失败
    
  •  **B.**   输出结果中包括 x
    
  •  **C.**   输出结果中包括 y
    
  •  **D.**   输出结果中包括 z
    
  •  **E.**  运行时会抛出一个异常
    

2.4 下面哪一个选项的说法是正确的?

public static void sort1() {
    Set set = new TreeSet();
    set.add("2");
    set.add(3);
    set.add("1");
    Iterator it = set.iterator();
    while (it.hasNext())
        System.out.print(it.next() + "");
}
  •  **A.**   sort1方法会打印出 1 2
    
  •  **B.**  sort1方法会打印出 1 2 3
    
  •  **C.**   sort1会打印3个数字,顺序不定
    
  •  **D.**  编译失败
    
  •  **E.**  运行时会抛出一个异常
    

2.5 如下程序运行结果是什么?

class A {
    void m() {
        System.out.println("outer");
    }
}
public class Inners {
    public static void main(String[] args) {
        new Inners().go();
    }
    void go() {
      new A().m();
      class A {
        void go() {
          System.out.println("inner");
        }
      }
    }
    class A {
      void m() {
        System.out.println("middle");
      }
    }
}
  •  **A.**   inner
    
  •  ** B.**  outer
    
  •  **C. **  middle
    
  •  **D.**  编译失败
    
  •  **E.**  运行时会抛出一个异常
    

3 解析

3.1 2.1题 E 正确

不能满足Son构造函数中隐含的super()调用,因为Parent中没有无变元构造函数。仅当类没有显式定义的构造函数时,编译器才会产生默认的无变元构造函数。

3.2 2.2题 F 正确

m2对象的m1实例变量从来不会被初始化,因此当m5试图使用它时,将抛出NullPointerException异常。

3.3 2.3题 C 正确

首先装箱负责处理布尔运算。第一个if所在行使用了求余运算符,它返回除法运算的余数,这里为1。而且,这一行还将b2设置成false,它不会测试b2的值。第二个if所在行将b2设置成true,它不会测试这个值。但是,短路运算符会阻止测试表达式b2=true。

3.4 2.4题 E 正确

不能将String和Integer同时放入同一个TreeSet中。不采用泛型,编译器无法知道什么类型适合于这个TreeSet,因此它允许任何东西进行编译。在运行时,TreeSet将深度在添加元素时排序它们,而在试图比较Integer和String时,会抛出ClassCastException异常。

3.5 2.5题 C 正确

类A的“内部”版本没有使用,因为它的声明位于go()方法内创建A的实例之后。

4 答案 [E , F , C , E , C]

5 结语

本文只是简单的收集和整理了5道javaSE的基础题目,大家可以测试一下,对自己java基础知识情况有一个简单的了解。希望大家在学习实用技术的时候,也多注意自己java基础素养的提高。
不能仅凭对上述几道问题的回答情况来评价一个人真正的java水平,但是生活并不完美。
加油吧,同学们!学习的路上我们一起。
大家可以在评论区写出自己的测试分数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,701评论 0 11
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,292评论 0 16
  • 一、消失的男孩,错过的初恋。 这个消失的男孩叫苏博文,他身上的优秀特质太多了,梦想是飞机师,三个人便是在校园飞...
    小薇子阅读 628评论 0 0
  • 七律 二O一七年三月二十四日 五色祥云开新年, 满天朝霞飞紫烟。 署光初升山河美, 影正无斜日中...
    经络世家阅读 649评论 0 28