2019年12月8日 java2

考点1

假设一个 list初始化为{2,9,5,4,8,1}。 在第一次冒泡排序后,list变成了()?

  • A 2, 9, 5, 4, 8, 1
  • B 2, 9, 5, 4, 1, 8
  • C 2, 5, 9, 4, 8, 1
  • D 2, 5, 4, 8, 1, 9

解析

显示答案/隐藏答案正确答案: D

冒泡排序:将最大值放到末尾,一直缩小范围到第一位
第一次排序后最大的数,转移到数组最后

考点2

要求匹配以下16进制颜色值,正则表达式可以为: #ffbbad #Fc01DF #FFF #ffE

  • A /#([0-9a-f]{6}|[0-9a-fA-F]{3})/g
  • B /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
  • C /#([0-9a-fA-F]{3}|[0-9a-f]{6})/g
  • D /#([0-9A-F]{3}|[0-9a-fA-F]{6})/g

解析

显示答案/隐藏答案正确答案: B

考点3

对于如下代码段

1
2
3
4
5
6
7
8
9
10
11
12
class A{
public A foo(){return this;}
}
class B extends A{
public A foo(){
return this;
}
}
class C extends B
{
_______
}

可以放入到横线位置,使程序正确编译运行,而且不产生错误的选项是( )

  • A public void foo(){}
  • B public int foo(){return 1;}
  • C public A foo(B b){return b;}
  • D public A foo(){return A;}

解析

显示答案/隐藏答案正确答案: C

重写 要求

两同两小一大原则,

  • 方法名相同,
  • 参数列表相同,
  • 子类返回类型小于等于父类方法返回类型,
  • 子类抛出异常小于等于父类方法抛出异常,
  • 子类访问权限大于等于父类方法访问权限。

[注意:这里的返回类型必须要在有继承关系的前提下比较]

重载

两同一不同

  • 同一个类中
  • 方法名必须相同,
  • 参数类型必须不同,

再来说说这道题 A B 都是方法名和参数相同,是重写,但是返回类型没与父类返回类型有继承关系

D语法错误,要返回一个对象,不能返回一个类

c的参数类型与父类不同,所以不是重写,可以理解为广义上的重载访问权限小于父类,都会显示错误

虽然题目没点明一定要重载或者重写,但是当你的方法名与参数类型与父类相同时,已经是重写了,这时候如果返回类型或者异常类型比父类大,或者访问权限比父类小都会编译错误

考点4

URL u =new URL(“http://www.123.com");。如果www.123.com不存在,则返回______。

  • A http://www.123.com
  • B “”
  • C null
  • D 抛出异常

解析

显示答案/隐藏答案正确答案: A

new URL()时必须捕获检查异常,但这个异常是由于字符串格式和URL不符导致的,与网址是否存在无关。URL的toString方法返回字符串,无论网址是否存在
有空了解一下

考点5 考点:子类构造器调用父类构造器 已提供构造器则系统不提供默认无参构造器

以下程序的输出结果为

1
2
3
4
5
6
7
8
9
10
11
12
13
class Base{
public Base(String s){
System.out.print("B");
}
}
public class Derived extends Base{
public Derived (String s) {
System.out.print("D");
}
public static void main(String[] args){
new Derived("C");
}
}
  • A BD
  • B DB
  • C C
  • D 编译错误

解析

显示答案/隐藏答案正确答案: D

子类构造方法在调用时必须先调用父类的构造器,由于父类没有无参构造构造器,必须在子类中显式调用,修改子类构造方法如下即可:

1
2
3
4
public Derived(String s){
super("s");
System.out.print("D");
}

考点6

以下哪些jvm的垃圾回收方式采用的是复制算法回收

  • A 新生代串行收集器
  • B 老年代串行收集器
  • C 并行收集器
  • D 新生代并行回收收集器
  • E 老年代并行回收收集器
  • F cms收集器

解析

显示答案/隐藏答案正确答案: AD

有空了解一下
两个最基本的java回收算法:复制算法和标记清理算法
复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法
标记清理:一块区域,标记可达对象(可达性分析),然后回收不可达对象,会出现碎片,那么引出
标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
两个概念:新生代和年老代
新生代:初始对象,生命周期短的
永久代:长时间存在的对象
整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。
P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法
Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理
Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法
Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理
Parallel Old(并行)收集器,针对老年代,标记整理
CMS收集器,基于标记清理
G1收集器:整体上是基于标记 整理 ,局部采用复制

综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。

有空了解一下