四、写出下面程序运行结果(每小题6分,共30分)
3、
class NoteX {
public static final int
MIDDLE_C = 0, C_SHARP = 1, C_FLAT = 2;
}
class InstrumentX {
public void play(int NoteX) {
System.out.println(“InstrumentX.play()”);
}
}
class WindX extends InstrumentX {
public void play(NoteX n) {
System.out.println(“WindX.play(NoteX n)”);
}
}
class KettleX extends InstrumentX {
public void play(int NoteX) {
System.out.println(“KettleX.play(NoteX n)”);
}
}
public class WindMusic {
public static void tune(InstrumentX i) {
i.play(NoteX.MIDDLE_C);
}
public static void main(String[] args) {
WindX flute = new WindX();
tune(flute);
KettleX kttle = new KettleX();
tune(kttle);
}
}
输出: InstrumentX.play()
KettleX.play(NoteX n)
4、
class Tags {
Tags(int marker) {
System.out.println(“Tags(” + marker + “)”);
}
}
class Insect {
Tags t1 = new Tags(1);
int i = 9;
int j;
Insect() {
prt(“i = ” + i + “, j = ” + j);
j = 39;
}
static int x1 = prt(“static Insect.x1 initialized”);
Tags t2 = new Tags(2);
static int prt(String s) {
System.out.println(s);
return 47;
}
}
public class Beetle
extends Insect {
Tags t3 = new Tags(3);
int k = prt(“Beetle.k initialized”);
Beetle() {
prt(“k = ” + k);
prt(“j = ” + j);
}
static int x2 = prt(“static Beetle.x2 initialized”);
static int prt(String s) {
System.out.println(s);
return 63;
}
public static void main(String[] args) {
prt(“Beetle constructor”);
Beetle b = new Beetle();
}
}
输出: static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
Tags(1)
Tags(2)
i = 9, j = 0
Tags(3)
Beetle.k initialized
k = 63
j = 39
5、
public class ArrayTest {
private int[] str = {1,2,3,4,5,6};
public ArrayTest() {
}
public void increase(int[] arrays){
for(int i = 0; i < arrays.length; i++){
arrays[i]++;
}
}
public void print(){
System.out.print(“str = [");
for(int i = 0; i < str.length; i++){
if(i > 0){
System.out.print(",");
}
System.out.print(str[i]);
}
System.out.println(“]”);
}
public static void main(String[] args){
ArrayTest obj = new ArrayTest();
obj.print();
System.out.println(“After increase:”);
obj.increase(obj.str);
obj.print();
} }
输出:
str = [1,2,3,4,5,6]
After increase:
str = [2,3,4,5,6,7]
五、写出下面程序的运行结果并分析程序的潜在缺陷(每小题7分,共21分)
1、
public class NullHandle {
private String str;
public NullHandle() {
}
public String getStr(){
return str;
}
public static void main(String[] args){
NullHandle obj = new NullHandle();
String nullStr = obj.getStr();
if(nullStr.length() == 0){
System.out.println(“empty!”);
} else{
System.out.println(nullStr);
}
}
}
2、
public class Snake implements Cloneable {
private Snake next;
private char c;
Snake(int i, char x) {
c = x;
if(–i > 0)
next = new Snake(i, (char)(x + 1));
}
void increment() {
c++;
if(next != null)
next.increment();
}
public String toString() {
String s = “:” + c;
if(next != null)
s += next.toString();
return s;
}
public Object clone() {
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {}
return o;
}
public static void main(String[] args) {
Snake s = new Snake(5, ‘a’);
Sy