Java基础测试

本文介绍了Java编程的基础概念,包括类的继承、构造方法、多态的使用以及抽象类与接口的区别。同时,讲解了集合框架中的ArrayList、HashMap和Set的特性与操作,如遍历、过滤、转换等。此外,还涉及到了异常处理的基本原则,如try-catch-finally结构、异常类型和处理方法。
摘要由CSDN通过智能技术生成
单选题

1以下两个类存在继承关系,选项中说法正确的是?( )

class Person {
    private String name;
    private int age;
    public Person() {
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    private void eat(){
        System.out.println(name+"在吃饭");
    }
}
public class Student extends Person {
    public Student(String name, int age) {
        super(name, age);
    }
    public void eat(){
        System.out.println("学生在吃饭");
    }
    public void eat2(){
        System.out.println("学生在吃饭");
    } 
}
A、 Student类中的eat()方法是对父类方法的重写。
B、 Student类中的eat2()方法是对父类方法的重写。
C、 Student类中的构造方法是对父类方法的重写。
D、 Student类中没有任何方法是对父类方法的重写。

正确答案:D

父类方法是私有的,子类不能重写,方法重写的前提是继承,父类中的eat()方法被private所修饰,那么就不会被子类继承,也就不存在方法的重写。而构造方法也不会被子类继承,也就不存在方法的重写。

2 继承是Java面向对象三大特征之一,提高了代码的重用性.下列选项中不包含继承关系的是?()

A、 class Son extends Father{}
B、 class Son implements Inter1{}
C、 interface Inter1 extends Inter2{}
D、 class Son extends Father implements Inter2{}

正确答案:B

继承关系是用extends关键字

3根据以下代码使用多态创建对象,并且调用子类特有方法,下列选项中正确的是?()

class Fu{
    public void fun1(){
        System.out.println("我是fu类fun1方法");
    }
}
class Zi extends Fu{   
    public void fun2(){
        System.out.println("我是zi的fun1方法");
    }
}
class Son extends Fu{
     public void fun2(){
        System.out.println("我是son的fun1方法");
    }
}

A:

Fu fu = new Zi();
fu.fun2();

B:

 Fu fu = new Son();
 Zi zi = (Zi)fu;
 zi.fun2(); 

C:

 Fu fu = new Son();
 Son son = (Son)fu;
 son.fun2();

D:

 Fu fu = new Fu();
 Son son = (Son)fu;
 son.fun2();

正确答案:C

首先多态格式为:父类 对象名 = new 子类();所以D选项明显错误,其次多态的特点不能使用子类特有的方法,如果想要使用必须向下转型,所以A选项错误,而且向下转型必须是一个还原操作才可以,而B选项不是还原操作,所以正确答案C

4关于接口和抽象类的区别,说法正确的是()

A、 抽象类和接口中只能定义静态变量
B、 抽象类和接口中都只能定义抽象方法
C、 抽象类具备构造方法,接口中没有构造方法
D、 抽象类和接口两者都是,只允许单继承

正确答案:C

接口和抽象类的区别:

抽象类:

  • 抽象类中可以定义抽象方法外也可以定义构造器,可以包含静态方法静态变量,以及普通方法普通变量,总之就只是失去创建对象的能力,除此之外,普通类有的,抽象类都具备;
  • 一个类只能继承一个抽象类;
  • 有抽象方法的类必须声明为抽象类,而抽象类未必要有抽象方法;
  • 抽象类中抽象方法的访问类型可以是public、protected和default。

接口:

  • JDK7之前,接口中的只能定义常量和抽象方法。
  • JDK8之后,接口中可以有默认方法,静态方法,JDK9又新增私有方法等非抽象方法。
  • 接口中不能定义构造方法。
  • 一个类可以实现多个接口。
  • 抽象方法默认都是 public abstract 修饰的,可以省略不写。
    常量默认都是 public static final修饰的,可以都省略不写也可任意省略哪个。

相同点:

  • 都不能被实例化。
  • 一个类如果继承了某个抽象类或者实现了某个接口,都需要对其中的抽象方法全部进行实现,否则该类仍需要被声明为抽象类。

作用区别:

1.抽象类可以被子类继承,而且只能单继承。

2.接口可以被子类实现,而且支持多实现;接口也可以被其他接口继承,而且是多继承。

5以下关于抽象类和接口的说法错误的是( )

A、 在抽象类中可以没有抽象方法
B、 实现抽象类和接口的类必须实现其中的所有抽象方法,除非它也是抽象类
C、 接口中定义的变量默认都是public static final,且必须为其赋值,而且不能改变值
D、 接口中的方法都必须加上public关键字

正确答案:D

6将下面代码用lambda表达式替换正确的是( )[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WslTwgUt-1668077687655)(Java基础测试/a0bcac19468049058cb62f89f85cab48.png)]

A、 new Thread(() -> System.out.println("Hello World!"));
B、 new Thread(() -> "Hello World!");	
C、 new Thread( -> "Hello World!");
D、 new Thread( -> System.out.println("Hello World!"))

正确答案:A

7观察下列代码,求最终结果:( )

Stream<String> original = Stream.of("Hello.java", "java编程思想.pdf", "IOS开发快速入门.pdf", "stream.java","小葵花宝典.txt","如何学好java.txt");
Stream<String> result = original.filter(s -> s.contains("java")).skip(1);
System.out.println(result.count());
A、 3
B、 4
C、 2
D、 1

正确答案:A

8观察下列代码,输出的结果是? ()

HashMap<String, Integer> map = new HashMap<>();
map.put("张三", 18);
map.put("李四", 20);
map.put("张三", 20);
System.out.println(map.get("张三"));
A、 张三:18
B、 20
C、 18
D、 张三:20 李四:20

正确答案:B

9请问 set 集合中最终有几个元素 ()

有一个学生类: 
class Student{
    int age;

    public Student() {
    }

    public Student(int age) {
        this.age= age;
    }
}

public class Demo03 {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        set.add(new Student(18));
        set.add(new Student(18));
        set.add(new Student(20));

        System.out.println(set.size());
    }
}
A、 1
B、 2
C、 3
D、 0

正确答案:C

10下列关于Map集合的说法正确的是

A、 Map集合的value不能重复
B、 Map集合的key和value能存放基本数据类型的数据也能存放引用数据类型的数据
C、 Map集合的key和value只能是引用数据类型
D、 Map集合的key存放的数据是可以重复的

正确答案:C

11下列遍历Map集合的方式正确的是

HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("张无忌","赵敏");
hashMap.put("杨过","小龙女");
hashMap.put("郭靖","黄蓉");
hashMap.put("令狐冲","任盈盈");
A、  for (int i = 0; i < hashMap.size(); i++) {
    String s = hashMap.get(i);
    System.out.println(s);
  }
B、 for (String s:hashMap){
    String s1 = hashMap.get(s);
    System.out.println(s1);
  }
C、 Set<String> keySet = hashMap.keySet();
for (String key : keySet) {
    String value = hashMap.get(key);
    System.out.println(key+"="+value);
}
D、  Set<Entry<String, String>> set = hashMap.entrySet();
for (Entry<String, String> stringEntry : set) {
    String key = stringEntry.getKey();
    String value = stringEntry.getValue();
    System.out.println(key+"="+value);
}

正确答案:C

12观察以下代码,选择正确的一项( )

public class Person {
    private int number;
    private String name;
   //省略get,set方法,空参满参以及重写toString方法
} 

public static void main(String[] args) {
        HashMap<Person, String> map = new HashMap<Person, String>(); 
        //存Person对象的集合
        ArrayList<Person> list = new ArrayList<>();
        list.add(new Person(1,"tom"));
        list.add(new Person(2,"jack"));
        list.add(new Person(1,"tom"));
     
         //存抽奖码的集合
        ArrayList<String> haoma= new ArrayList<>();
        String[] numbers = {"0", "1", "2", "3", "4", "5"};
       //将指定的元素添加到指定的集合
        Collections.addAll(haoma,numbers);
       
        //Person对象及其抽取到的抽奖码存入到map集合
        Random r = new Random();
        for (int i = 0; i <list.size() ; i++) {
            map.put( list.get(i),  haoma.get(r.nextInt(haoma.size())));
        }
 }
A、 map集合可以直接使用for循环遍历。
B、 map集合可以成功存入3个person对象及其对应的抽奖码。 
C、 list集合中存入的Person对象,实际只有两个。
D、 随机获取抽奖码,正确的代码应该是: r.nextInt(haoma.size()-1)。 

正确答案:B

13下列选项中关于try…catch关键字异常处理的格式错误的是( )

A:

	try {
		
} catch(Exception e) {

}

B:

try {

} catch(Exception e) {

} finally {

}

C:

try {

} finally {

}

D:

catch(Exception e) {

} finally {

}

正确答案:D

14下面代码中,输出格式要求为"2020-05-20",哪个选项是正确的()

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        //此处代码应填写
        ______________
        Date date = new Date();
        String s = sdf.format(date);
        System.out.println(s);
    }
}
A、 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-dd-mm");
B、 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-DD");
C、 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
D、 SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");

正确答案:C

15已知代码如下:

String[] arr = {"张三","李四","王五","张三丰"};
Stream<String> s1 = _______①__________;
Stream<String> s2 = s1.filter(__________②______________);
List<String> list = s2.collect(________③__________);
System.out.println(list);

在横线处补全代码,使list集合中剩下张三和张三丰( )

A、 ①arr.stream()
②s -> s.startsWith("张")Collectors.toList()
B、 ①Stream.of(arr)
②s -> s.startsWith("张")Collectors.toList()
C、 ①arr.stream()String::startsWithCollectors.toList()
D、 ①arr.stream()String::startsWithCollector.toList() 

正确答案:B

数组获取流只能用Stream.of(arr)方法.

过滤姓张的Lambda表达式s -> s.startsWith(“张”)不能用String::startsWith替换

collect方法接收的参数是Collector类型。 但是生成List的Collector要用工具类的Collectors.toList()方法来生成。

16给定java代码如下,编译运行结果是

class Person {
    public static String company;
    public String name;
    public int age;
}
public class Demo {
    public static void main(String[] args) {
        Person.company="黑马";
        Person p=new Person();
        p.name="小明";
        p.age=20;
        p.company="传智";

        Person p1=new Person();
        p1.name="小亮";
        p1.age=23;
        p1.company="程序员";

        System.out.println(p.name+","+p.age+","+p.company);
        System.out.println(p1.name+","+p1.age+","+p1.company);
    }
}
A、 小明,20,传智
小亮,23,程序员
B、 小明,20,程序员
小亮,23,程序员
C、 小明,20,黑马
小亮,23,黑马
D、 编译出错 

正确答案:B

17关于抽象方法说法正确的是

A、 可以有方法体
B、 可以出现在非抽象类中
C、 使用abstract修饰的,没有方法体的方法
D、 抽象类中的方法都是抽象方法

正确答案:C

18ArrayList集合底层的数据结构

A、 数组
B、 链表
C、  队列
D、 栈

正确答案:A

19关于泛型说法错误的是

A、 泛型通配符使用?表示。
B、 泛型只能是引用数据类型。
C、 <? extends Car> ?表示匹配Car或者Car的子类。
D、  <? super Car> ?表示匹配Car或者Car的子类。

正确答案:D

20关于Object类中的equals方法,说法正确的是

A、 equals方法的作用是返回对象的地址值。
B、 equals方法,默认是比较两个对象的属性值是否一样。
C、 String类重写了Object的equals方法,比较两个字符串的内容是否相同。
D、 子类一定要重写equals方法 。

正确答案:C

21以下代码,语法不会报错的是

A、 int a = 10;
  String s = a;
B、 Boolean b = "true";
C、 Integer a = null; 
D、  int a = null; 

正确答案:C

22下面哪个集合存储和取出是无序的

A、 ArrayList
B、 List
C、 HashMap
D、 LinkedList

正确答案:C

23以下代码片段执行后,控制台的输出结果为

public static void main(String[] args){
   Map<Integer, String> map = new HashMap<>();
   map.put(1,"Android");
   map.put(2,"PHP");
   map.put(3,"Python");
   map.put(1,"Java");
   map.remove(2);
   System.out.println(map.get(1));
   System.out.println(map.get(2));
   System.out.println(map.get(3));
}
A、 Android
    null
    Python
    
B、 Java
    Python
    
C、Android
   Python
    
D、 Java
    null
    Python

正确答案:D

24观察下列代码,输出的结果是

HashMap<String, Integer> map = new HashMap<>();
map.put("老王", 18);
map.put("小张", 20);
map.put("老王", 20);
System.out.println(map.get("老王"));
A、 老王:18
B、 20
C、 18
D、 老王:20 小张:20

正确答案:B

25下列创建集合的方式不正确的是

A、 ArrayList list = new ArrayList()
B、 ArrayList<int> list = new ArrayList<int>()
C、 ArrayList<String> list = new ArrayList<>()
D、 Map<String, Integer> map = new HashMap<String, Integer>()

正确答案:B

26下列关于Map集合的说法不正确的是

A、 Map集合没有索引
B、 Map集合的value可以重复
C、 Map集合的key和value只能是引用数据类型
D、 Map集合的key和value能存放基本数据类型的数据也能存放引用数据类型的数据

正确答案:D

27Map集合的put方法添加key和value,如果键不存在是

A、 删除
B、 获取
C、 修改
D、 添加

正确答案:D

28以下程序运行之后,集合中剩下的元素是

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("张三");
    list.add("李四");
    list.add("王五");
    list.add("赵六");
    
    list.remove(0);
    list.remove(1);
}
A、 王五  赵六
B、 李四  王五
C、 李四  赵六
D、 张三  李四   

正确答案:C

29运行以下程序,遍历集合的效果是

TreeSet<Integer> tree = new TreeSet<>(new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
});
tree.add(22);
tree.add(11);
tree.add(11);
tree.add(44);
tree.add(33);
A、 22 11 44 33 
B、 11 22 33 44
C、 44 33 22 11
D、 22 11 11 44 33

正确答案:C

多选题

30下列对于多态的描述哪些是正确的()

A、 想要实现多态,必须要有类的继承或者接口实现的前提
B、 实现多态没有方法的重写多态没有意义
C、 实现多态,需要父类引用指向子类对象
D、 多态的前提下,不能直接访问子类特有方法

正确答案:A,B,C,D

31将下面代码用lambda表达式替换正确的是()。

List<String> items = new ArrayList<>();
items.add("A");
items.add("B");
items.add("C");
System.out.println("\n第一种遍历方式:增强for循环遍历 List 集合");
for (String item : items) {
	System.out.println(item);
}
A、 items.forEach(System.out::println);
B、 items.forEach(item->{System.out.println(item);});
C、 items.forEach(item->System.out.println(item));
D、 items.forEach(System.out—>println);

正确答案:ABC

32以下代码遍历Map集合,能够打印各元素的键和值的是()

A:

Set<Integer> keys = map.keySet();
for (int i = keys.size() - 1; i >= 0; i--) {
    System.out.println(keys.get(i));
}

B:

Set<Integer> keys = map.keySet();
for (Integer key : keys) {
    System.out.println(key);
}

C:

Set<Map.Entry<Integer,String>> entrySet = map.entrySet();
for (Map.Entry<Integer, String> entry : entrySet) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}

D:

Set<Integer> keys = map.keySet();
for (Integer key : keys) {
    System.out.println(key + " : " + map.get(key));
}

正确答案:CD

33以下选项中能实现 list 集合按照元素从小到大排序的是()

List<Integer> list = new ArrayList<>();
list.add(15);
list.add(10);
list.add(12);

A:

Collections.sort(list);
Collections.reverse(list);

B:

Collections.sort(list, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
});

C:

Collections.sort(list, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o1 - o2;
    }
});

D:

Collections.sort(list);

正确答案:CD

34下列选项中关于Java中super关键字的说法正确的是

A、 super关键字是在子类对象内部指代其父类空间的引用
B、 super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C、 子类可以通过super关键字调用父类的方法。
D、 子类可以通过super关键字调用父类的属性。

正确答案:ACD

35下列定义泛型的格式,正确的是

A、 泛型类:public class Person<T>{}
B、 泛型接口:public interface MyList<E>{}
C、 泛型方法:public <T> void method(T t){}
D、 泛型方法:public void method(<T> t){}

正确答案:ABC

36关于可变参数的说法正确的是

A、 方法中的可变参数可以有多个。
B、 方法中的可变参数必须在参数列表的最后。
C、 可变参数的底层是数组。
D、 如果方法参数是可变参数,调用方法时可以不传入参数,或者传入多个参数。

正确答案:BCD

37关于Collection的说法正确的是

A、  Collection是一个类。
B、  Collection是一个接口。
C、  Collection包含List和Set两种集合。
D、  Collection代表单列集合。  

正确答案:BCD

38下列选项描述Map集合特点正确的是

A、 Map集合中的key不能重复
B、 Map集合中的value不能重复
C、 Map集合有索引
D、 Map集合无索引

正确答案:AD

39下列选项描述Set集合特点正确的是

A、 A.Set集合不能存储重复元素
B、 Set集合是有索引
C、 Set集合是无索引
D、 HashSet集合存储自定义类型,想要不重复,需要在自定义类中重写hashCode和equals方法

正确答案:A,C,D

40下列选项中能够将Date类型转换为String类型格式正确的是

A、 1.Date date = new Date();
    2.SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
    3.String str = sdf.parse(date);
    4.System.out.println(str);
B、 1.Date date = new Date();
    2.SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
    3.String str = sdf.format(date);
    4.System.out.println(str);
C、 1.SimpleDateFormat sdf = new SimpleDateFormat();
    2.String str = sdf.format(new Date());
    3.System.out.println(str);
D、 2.SimpleDateFormat sdf = new SimpleDateFormat();
    3.String str = sdf.format(date);
    4.System.out.println(str);

正确答案:BC

1.String转换成Date类型

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
String strDate= “2019-09-19”;
Date date = sdf.parse(strDate);

2.Date转换成String型

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
Date date = new Date();
String time = sdf.format(date);

41代码如下:

1.public interface ISinger {
2.    public abstract void sing();
3.}
4.public  abstract class Person {
5.    public abstract void eat();
6.}
7.public class Student extends Person implements ISinger {
8.    public void eat() {
9.        System.out.println("吃学生餐");
10.    }
11.    public void sing() {
12.        System.out.println("歌唱祖国...");
13.    }
14.}
A、 1.Student st = new Student();
    2.Person s = (ISinger)st;
B、 1.Person p = new Student();
C、 1.ISinger s = new Student();
D、 1.Student st = new Student();
    2.ISinger singer = (ISinger)st;

正确答案:BCD

42已知方法的定义如下,调用正确的是public static void sum(int … a){}

A、 sum()
B、 sum(11)
C、 sum(11, 22)
D、 sum(3.14, 11, 22)

正确答案:A,B,C

43下面关于Java中异常处理说法正确的是

A、 try后通常应有catch,用来处理try中的异常
B、 catch后必须有finally
C、 释放资源的代码应放在finally中
D、 处理异常的代码应放在catch中

正确答案:A,C,D

sdf = new SimpleDateFormat(“yyyy-MM-dd”);

Date date = new Date();
String time = sdf.format(date);

41代码如下:

1.public interface ISinger {
2.    public abstract void sing();
3.}
4.public  abstract class Person {
5.    public abstract void eat();
6.}
7.public class Student extends Person implements ISinger {
8.    public void eat() {
9.        System.out.println("吃学生餐");
10.    }
11.    public void sing() {
12.        System.out.println("歌唱祖国...");
13.    }
14.}
A、 1.Student st = new Student();
    2.Person s = (ISinger)st;
B、 1.Person p = new Student();
C、 1.ISinger s = new Student();
D、 1.Student st = new Student();
    2.ISinger singer = (ISinger)st;

正确答案:BCD

42已知方法的定义如下,调用正确的是public static void sum(int … a){}

A、 sum()
B、 sum(11)
C、 sum(11, 22)
D、 sum(3.14, 11, 22)

正确答案:A,B,C

43下面关于Java中异常处理说法正确的是

A、 try后通常应有catch,用来处理try中的异常
B、 catch后必须有finally
C、 释放资源的代码应放在finally中
D、 处理异常的代码应放在catch中

正确答案:A,C,D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值