0
点赞
收藏
分享

微信扫一扫

java测验

Java 基础测验

一、选择题(共 10 题,每题 5 分)

  1. 下列关于 Java 语言的说法,错误的是( )
    A. Java 是跨平台的,因为它运行在 JVM 上B. Java 支持多重继承C. Java 是一种面向对象的语言D. Java 程序的入口方法是 main 方法
  2. 以下代码的输出结果是( )





    java



    运行






public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a + b + "");
        System.out.println("" + a + b);
    }
}

A. 30, 30

  1. B. 30, 1020C. 1020, 30D. 1020, 1020
  2. 下列关于 final 关键字的用法,错误的是( )
    A. final 修饰的类不能被继承B. final 修饰的方法不能被重写C. final 修饰的变量必须在声明时初始化D. final 修饰的引用变量,其指向的对象内容可以修改
  3. 以下哪种集合是有序且可重复的( )
    A. HashSetB. TreeSetC. ArrayListD. HashMap
  4. 下列关于异常处理的说法,正确的是( )
    A. try 块必须有对应的 catch 块B. finally 块中的代码无论是否发生异常都会执行C. throw 用于声明方法可能抛出的异常D. checked 异常必须被捕获或声明抛出
  5. 以下代码的输出结果是( )





    java



    运行






class Parent {
    public void show() {
        System.out.println("Parent");
    }
}
class Child extends Parent {
    public void show() {
        System.out.println("Child");
    }
}
public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.show();
    }
}

A. Parent

  1. B. ChildC. 编译错误D. 运行时错误
  2. 下列关于接口的说法,错误的是( )
    A. 接口中的方法默认是 public abstractB. 接口可以继承多个接口C. 接口中的变量默认是 public static finalD. 接口可以被实例化
  3. 以下代码的输出结果是( )





    java



    运行






public class Test {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = new String("abc");
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
    }
}

A. true, true

  1. B. true, falseC. false, trueD. false, false
  2. 下列关于多线程的说法,正确的是( )
    A. start() 方法用于执行线程的任务B. run() 方法用于启动线程C. 多个线程访问共享资源时,可能导致线程安全问题D. synchronized 关键字只能修饰方法
  3. 以下哪种数据类型不是 Java 的基本数据类型( )
    A. intB. StringC. booleanD. char

二、简答题(共 2 题,每题 10 分)

  1. 简述 Java 中的重载(Overload)和重写(Override)的区别。
  2. 简述 ArrayList 和 LinkedList 的区别及适用场景。

三、编程题(共 1 题,20 分)

编写一个 Java 程序,计算 1 到 100 之间所有质数的和。

答案与解析

一、选择题

  1. B
    解析:Java 不支持多重继承,只能通过接口实现多继承。
  2. B
    解析:
  • a + b + "":先计算 a + b = 30,再拼接空字符串,结果为 "30"
  • "" + a + b:先拼接空字符串和 a"10"),再拼接 b,结果为 "1020"
  1. C
    解析:final 修饰的变量可以在声明时初始化,也可以在构造方法中初始化,但必须保证只初始化一次。
  2. C
    解析:
  • ArrayList 是有序、可重复的;
  • HashSet 无序、不可重复;
  • TreeSet 有序、不可重复;
  • HashMap 是键值对集合,无序。
  1. B
    解析:
  • try 块可以没有 catch 块,但必须有 finally 块或声明抛出异常;
  • finally 块中的代码无论是否发生异常都会执行(除非 JVM 退出);
  • throw 用于手动抛出异常,throws 用于声明方法可能抛出的异常。
  1. B
    解析:这是多态的体现,父类引用指向子类对象时,调用的是子类重写的方法。
  2. D
    解析:接口不能被实例化,只能被类实现。
  3. C
    解析:
  • == 比较的是对象的引用地址,s1 指向常量池中的对象,s2 指向堆中的对象,地址不同;
  • equals() 比较的是字符串内容,两者内容相同。
  1. C
    解析:
  • start() 方法用于启动线程,run() 方法用于执行线程任务;
  • 多个线程访问共享资源时,若没有同步机制,可能导致数据不一致;
  • synchronized 关键字可以修饰方法或代码块。
  1. B
    解析:String 是引用数据类型,其他选项均为基本数据类型。

二、简答题

  1. 重载(Overload)和重写(Override)的区别
  • 重载
  • 发生在同一个类中;
  • 方法名相同,参数列表(类型、个数、顺序)不同;
  • 返回值类型、访问修饰符可以不同;
  • 与多态无关。
  • 重写
  • 发生在父类和子类之间;
  • 方法名、参数列表、返回值类型必须相同;
  • 子类方法的访问修饰符不能严于父类;
  • 与多态相关,用于实现子类的个性化行为。
  1. ArrayList 和 LinkedList 的区别及适用场景
  • 存储结构
  • ArrayList 基于动态数组实现,连续存储;
  • LinkedList 基于双向链表实现,非连续存储。
  • 访问效率
  • ArrayList 随机访问(get(int index))效率高,时间复杂度为 O (1);
  • LinkedList 随机访问效率低,时间复杂度为 O (n),但插入、删除元素效率高(无需移动元素)。
  • 适用场景
  • ArrayList 适合频繁查询、少量插入 / 删除的场景;
  • LinkedList 适合频繁插入、删除,少量查询的场景。

三、编程题

java

运行

public class PrimeSum {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 2; i <= 100; i++) {
            if (isPrime(i)) {
                sum += i;
            }
        }
        System.out.println("1到100之间所有质数的和为:" + sum);
    }

    // 判断一个数是否为质数
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }
        // 优化:只需判断到根号num
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

输出结果:1 到 100 之间所有质数的和为:1060

总结

这套测验题涵盖了 Java 基础中的核心知识点,通过练习可以巩固对 Java 语法、面向对象、集合、异常、多线程等内容的理解。编程题则考察了逻辑思维和代码实现能力,建议结合实际场景多练习,加深对知识点的掌握。

举报
0 条评论