1.选择题
1)A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明:问以下哪个说法是正确的?(D)
1. A a0=new A();
2. A a1=new B();
3. A a2=new C();
A 、只有第一行能通过编译
B 、第1、2行能通过编译,但第3行编译出错
C 、第1、2、3行能通过编译,但第2、3行运行时出错
D 、第1行,第2行和第3行的声明都是正确的
解答:继承具有传递性
2)下面代码输出什么?(false)
public class SystemUtil{
public static boolean isAdmin(String userId){
return userId.toLowerCase()=="admin";
}
public static void main(String[] args){
System.out.println(isAdmin("Admin"));
}
}
解答:执行 toLowerCase() 时会重新new String(),而==是判断地址,所以会返回false。
3)阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有(A)
class Test {
public static void hello() {
System.out.println("hello");
}
}
public class MyApplication {
public static void main(String[] args) {
Test test=null;
test.hello();
}
}
A、能编译通过,并正确运行
B、因为使用了未初始化的变量,所以不能编译通过
C、以错误的方式访问了静态方法
D、能编译通过,但因变量为null,不能正常运行
解答:因为Test类的hello方法是静态的,所以是属于类的,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化new Test();影响,只要是使用到了Test类,都会加载静态hello方法!
另外,在其他类的静态方法中也是可以调