华为的 JAVA 面试题
QUESTION NO: 1
public classTest1 {
public static voidchangeStr(String str){
str="welcome";
}
public static voidmain(String[] args) {
String str="1234";
changeStr(str);
System.ou t.println(str);
}
}
//输出结果:1234
QUESTION NO:2
public classTest2 {
static booleanfoo(charc) {
System.out.print(c);
return true;
}
public static voidmain(String[] args) {
inti = 0;
for(foo('A');foo('B') && (i < 2);foo('C')) {
i++;
foo('D');
}
}
}
/*
What is the result?
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
//输出结果是:ABDCBDCB
分析:FOR 循环里面讲究的条件要为真,与你的判断式是什么没有关系
就像这里,虽然是打印的字母,但是却不是 false,所以可以执行
第一次进行循环:
foo('A')打印字母 A,(注:这里不是 false 条件就默认为 true 条件)
foo('B')打印字母 B,i=0,比较(i < 2),条件为 true,进行循环体,foo('D')打印 D
foo('C')打印字母 C
第二次循环:
foo('B')打印 B,i=1,比较(i < 2)为 true,进行循环体,foo('D')打印 D