• Java错题归纳day20


    1. 在Java中,以下关于方法重载和方法重写描述正确的是?

    A 方法重载和方法的重写实现的功能相同
    B 方法重载出现在父子关系中,方法重写是在同一类中
    C 方法重载的返回值类型必须一致,参数项必须不同
    D 方法重写的返回值类型必须相同或相容。
    答案:D
    解析:

    • 重载是发生在同一个类中,方法名相同,参数列表不同的方法,为的是在处理不同的数据类型时,为调用者提供了一个同意的入口。重载遵循编译期绑定。
    • 重写是指,子类中的方法与父类的方法方法签名相同。从而覆盖父类中的方法的现象。重写是多态的基础,通过重写,子类可以表现出与父类不同的行为。重写时要,遵循“两同两小一大”的原则,即:方法名相同,参数列表相同,返回值类型要小于或等于父类,抛出的异常要小于或等于父类,访问权限要大于等于父类。

    2. 在 java 中 , 以下 _____ 类的对象以键 - 值的方式存储对象

    A java,util.List
    B java,util.ArrayList
    C java,util.HashMap
    D java,util.LinkedList
    答案:C
    解析:

    • Map以key-value形式保存,HashMap、HashTable继承自Map;
    • ArrayList底层以数组方式存储;
    • LinkedList以链表形式存储。

    3. 在java7中,下列哪个说法是正确的:

    A ConcurrentHashMap使用synchronized关键字保证线程安全
    B HashMap实现了Collection接口
    C Arrays.asList方法返回java.util.ArrayList对象
    D SimpleDateFormat对象是线程不安全的
    答案:D
    解析:

    • hashMap在单线程中使用大大提高效率,在多线程的情况下使用hashTable来确保安全
    • hashTable中使用synchronized关键字来实现安全机制,但是synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费。
    • concurrentHashMap采用分段加锁的机制来确保安全
    • Arrays.asList()
      将一个数组转化为一个List对象,这个方法返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

    4. 给定代码:

    public class SwitchTest{//1
    public static void main(String[] args) {//2
    System.out.println("value="+switchit(4));//3
    }//4
    public static int switchit(int x) {
    int j=1;
    switch (x) {
    case 1:j++;
    case 2:j++;
    case 3:j++;
    case 4:j++;
    case 5:j++;
    default:j++;
    }
    return j+x;
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    第三行将输出什么?
    A value=6
    B value=8
    C value=3
    D value=5
    E value=4
    答案:C
    解析:switch代码块中没有break,从case 4开始一直执行到最后,j自加3次变成了4,结果返回8,所以选B

    5. 用命令方式运行以下代码的运行结果是()

    public class f{
    public static void main(String[] args){
    String foo1 = args[1];
    String foo2 = args[2];
    String foo3 = args[3];
    }
    }
    命令: java f a b c
    A 程序编译错误
    B a b c
    C 程序运行错误
    D f
    答案:C
    解析:上来就直接用【javac T11 a b c】,以及【javac f a b c】的都会报错。要看是否越界,只能先编译了才行。就是【 javac f.java】。之后用【java T11 a b c】报错"找不到或无法加载主类t11",【java f a b c】会报错,抛出异常,ArrayIndexOutOfBoundsException

    6. 以下哪项不属于java类加载过程?

    A 生成java.lang.Class对象
    B int类型对象成员变量赋予默认值
    C 执行static块代码
    D 类方法解析
    答案:B
    解析:成员变量不会被初始化,只有静态变量会被初始化,所以选B

  • 相关阅读:
    FL Studio 21.2.3.3586 for Mac中文版新功能介绍及2024年最新更新日志
    webssh —— 浏览器上的终端
    Java核心知识点整理大全6-笔记
    从零开始,开发一个 Web Office 套件(11):支持中文输入法(or 其它使用输入法的语言)
    TensorMask 0.1 & Detectron2 0.6 在Windows的环境下编译安装与测试【2022.8.7】
    复现一个循环问题以及两个循环问题
    hadoop HA部署(NFS方案)
    面向切面AOP
    基于PLC的污水厌氧处理控制系统(论文+源码)
    C++ final和override的作用,以及使用场合
  • 原文地址:https://blog.csdn.net/m0_52322019/article/details/126065305