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"
下面说法正确的是:
正常执行,结果与期望一致!