Java牛客 -- 专项练习(3)

前因:

记录在牛客上刷题的错题记事本

1. 下面的方法,当输入为2的时候返回值是多少?

public static int getValue(int i) {
	int result = 0;
	switch (i) {
		case 1:
			result = result + i;
		case 2:
			result = result + i * 2;
		case 3:
			result = result + i * 3;
	}
	return result;
}
A : 0
B : 2
C : 4
D : 10

答案选D, 没有break,发生case穿透现象,程序会继续向下执行,直到遇到break或者结束switch语句的大括号为止。

2. 如下的Java程序 , 若采用命令行“java Test one two three”调用,则程序输出的结果为:

public class Test { 
     public static void main(String[] args) { 
     	System.out.println(args[0]); 
     } 
} 
A : Test
B : one
C : two
D : java

答案选B,采用命令行“ java Test one two three ”调用,其中Test为调用的方法,而one two three则为Test方法里面main函数的参数;System.out.println(args[0]);表示输出第一个元素,故为one;

3. 下面论述正确的是()?

A : 如果两个对象的hashcode相同,那么它们作为同一个HashMap的key时,必然返回同样的值
B : 如果a,b的hashcode相同,那么a.equals(b)必须返回true
C : 对于一个类,其所有对象的hashcode必须不同
D : 如果a.equals(b)返回true,那么a,b两个对象的hashcode必须相同

答案选D, hashcode和equals的约定关系如下:

  • 如果两个对象相等,那么他们一定有相同的哈希值(hash code)。
  • 如果两个对象的哈希值相等,那么这两个对象有可能相等也有可能不相等。(需要再通过equals来判断)

4. 实现或继承了Collection接口的是()

A : Map
B : List
C : Vector
D : Iterator
E ; Set

答案选B,C,E。在这里插入图片描述

5. 以下哪种方式实现的单例是线程安全的

A : 枚举
B : 静态内部类
C : 双检锁模式
D : 饿汉式

答案A,B,C,D。

  1. 饿汉式(线程安全,调用效率高,但是不能延时加载);
  2. 懒汉式(线程安全,调用效率不高,但是能延时加载);
  3. Double CheckLock实现单例:DCL也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用);
  4. 静态内部类实现模式(线程安全,调用效率高,可以延时加载);
  5. 枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)。
发布了15 篇原创文章 · 获赞 1 · 访问量 3129

猜你喜欢

转载自blog.csdn.net/ZeroWdd/article/details/104283910