JAVA练习——选择+编程(2)

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方法!
另外,在其他类的静态方法中也是可以调

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值