雨课堂知识点总结(八)

3.1(B)

1,关于mutable和immutable的说法正确的是:

所有的简单数据类型和所有相对应的封装类(Integer,Double,Boolean等)都是immutable的

所有数组都是mutable的

使用immutable类型可以降低程序蕴含bug的风险,但其时空性能相对较差

2,针对final关键字,说法正确的是:

A final class declaration means it cannot be inherited

A final variable means it always contains the same value/reference but cannot be changed

A final method means it cannot be overridden by subclasses

3.String a = "a";

String c = a;

a += "b";

c += "c";

StringBuilder b = new StringBuilder(a);

StringBuilder d = b;

b.append("b");

d.append("c");

假设执行之后未进行任何垃圾回收,此时内存里共有3个String对象和1个StringBuilder对象

此时c的取值是ac,d的取值是abbc

4,关于immutable和mutable data type的说法,正确的是:

使用不可变类型,对其频繁修改会产生大量的临时拷贝

可变类型可直接修改其值而无需太多拷贝,从而提高效率

不可变数据类型更安全,因为其值无法修改

使用可变类型做全局变量,可在不同模块之间高效率的进行共享数据读写

5,final List<String> l1 = new ArrayList<>();

List <String> l2 = new ArrayList<>();

1.l1.add("a");

2.l1.set(0,"b");

3.l1 = l2;

4.l2 = l1;

上面无法通过static type checking的是3

因为l1为final

6.List <String> k = new ArrayList<>();

k.add("lab1 ends");

Iterator it  = k.iterator();

System.out .println(it.hasNext());

it.next();

System.out.println(it.hasNext());

k.remove(0);

System.out.println(it.hasNext());

输出的结果为true false true

第三个在迭代器迭代过程中用remove删除的话,以后随便输出信息,所以为true

7.List<String> t = new ArrayList<>();

t.addAll(Arrays.asList("a","b"));

Iterator<String> i = t.itertor();

while(i.hasNext())

  if(i.next()=="a")

    i.remove();

期望结果是t中只包含"b"

下面说法正确的是:

正常执行,结果与期望一致!

原文地址:https://www.cnblogs.com/HIT-ryp/p/10564751.html