Java中的Primitive Type(int, char, boolean等)和Object Type(String, Boolean, Calendar等)的差异是____
A 前者在stack中分配内存,后者在heap中分配内存
B 使用前者的时空代价低,使用后者的时空代价高
C 前者是immutable的,后者是mutable的(Object Type可是immutable)
D 前者和后者中的某些类型可通过auto-boxing进行自动转换,例如int和Integer
正确答案:ABD
以下__不是static type checking所能处理的编程错误
A 所调用函数的参数数目错误
B 调用一个指向null的对象的某个方法
C 函数的return语句返回的变量类型与函数声明中的返回值类型不匹配
D 赋值语句右侧的值类型与左侧的变量类型不匹配
正确答案:B
关于mutable和immutable的说法,不正确的是__
A 所有简单数据类型和所有相对应的封装类(Integer, Double, Boolean等)都是immutable的
B 所有数组都是mutable的
C 使用immutable类型可以降低程序蕴含bug的风险,但其时空性能相对较差
D 一个immutable的类,一旦其constructor方法执行结束并产生了类的实例,则该实例的任何成员变量都不能够再被做任何修改(Beneficent mutation,即immutable的属性是可变的,但是要保证用户角度是一样的)
正确答案:D
针对final关键字,说法不正确的是___
A A final class declaration means it cannot be inherited.
B A final variable means it always contains the same value/reference but cannot be changed
C A final method means it cannot be overridden by subclasses
D The contents in a final Arraylist cannot be changed during its lifecycle.(内容可变,引用不变)
正确答案:D
关于immutable和mutable data type的说法,正确的__
A 使用不可变类型,对其频繁修改会产生大量的临时拷贝
B 可变类型可直接修改其值而无需太多拷贝,从而提高效率
C 不可辩数据类型更“安全”,因为其值无法修改
D 使用可变类型做“全局变量”,可在不同模块之间高效率的进行共享数据读写
正确答案:ABCD
String a = "a";
String c = a;
a += "b";
c += "c";
StringBuilder b = new StringBuilder(a);
StringBuilder d = b;
b.append("b");
d.append("c");
假设执行之后未进行任何垃圾回收,此时内存里共有 [填空1] 个String对象和 [填空2] 个StringBuilder对象
此时c的取值是 [填空3] ,d的取值是 [填空4]
正确答案:
3;1;ac;abbc
(因为无回收,所以一开始的“a"也存在,有”a",“ab”,"ac"三个string,只new了一个StringBuilder,所以只有一个对象)
两个方法具有“行为等价性(behavior equivalence)”,以下说法正确的是_____
A 站在客户端的视角看,它们实现相同的功能
B 站在客户端的角度看,它们可能展现出不同的性能
C 它们具有相同的规约(spec)
D 它们具有相同的实现算法和异常处理策略
E 其实是针对同一个spec来说是等价的。若对这个spec进行更改,这两个方法也许就不等价了
正确答案:ABCE
(对于用户而言)
以下说法正确的是___
A 除非在post-condition中明确声明过,否则方法内部代码不应该改变(mutate)输入参数
B 方法的spec描述里不能使用内部代码中的局部变量或该方法所在类的private属性
C 若在方法的post-condition中声明“client端不能修改该方法所返回的数量”,可以减少该方法的潜在bug(无法控制client)
D 若为某方法设计JUnit test case,在任何test case中对该方法的调用必须遵循其pre-condition
正确答案:ABD
以下关于ADT的RI和AF的说法,不正确的是___
A ADT的Abstract空间(A)中的某个值,在其Rep空间®中可能有多个值与其对应
B 若ADT的某个方法返回一个mutable的对象,并不一定表明该ADT产生了表示泄露(defensive copy)
C 若ADT的任意costructor所构造出的object都满足RI、每个mutator方法执行结束后都保持RI为真,那么该ADT的RI就始终为真(rep exposure)
D 一个immutable的ADT,其rep可以是mutable的(只要无rep exposure)
正确答案:C
关于Java interface的说法,正确的是__
A 不能有static方法
B 不能有constructor(构造器)
C 不能有final方法
D 不能有private方法
E 不能有fields(属性)(可以是public static final)
正确答案:BCD
以下针对ADT等价性的说法,不正确的是____
A 如果对象a和b的R值被AF映射到相同的A值,则a和b等价
B 对对象a和b调用任何相同的方法,都会得到相同的返回值,则它们是等价的
C 对象a和b不等价,那么该ADT中不应存在任何方法op使得a.op()=b.op()
D 对象a和b是等价的,那么a和b的rep中每个field的值也一定是相等的
正确答案:CD
Java中有两种不同的操作来验证对象的等价性,分别为==和equals(),它们的“学名”是 [填空1] 等价性和 [填空2] 等价性。(immutable)
请填写中文
正确答案:
引用;对象
针对mutable的Java类,有两种等价性,分别为 [填空1] 等价性和 [填空2] 等价性。
请填写中文
正确答案:
观察;行为