java assert int_关于java 中的assert 关键字 | 学步园

23.int z=5;

24.

25. public void stuff1(int x) {

26. assert (x> 0);

27. switch(x) {

28. case 2: x= 3;

29. default: assert false; } }

30.

31. private void stuff2(int y) { assert (y < 0); }

32.

33. private void stuff3() { assert (stuff4()); }

34.

35. private boolean stuff4() { z = 6; return false; }

Which is true?

A. All of the assert statements are used appropriately.

B. Only the assert statement on line 31 is used appropriately.

C. The assert statements on lines 29 and 31 are used appropriately.

D. The assert statements on lines 26 and 29 are used appropriately.

E. The assert statements on lines 29 and 33 are used appropriately.

F. The assert statements on lines 29, 31, and 33 are used

appropriately.

G. The assert statements on lines 26, 29, and 31 are used

appropriately.

23.int z=5;

24.

25. public void stuff1(int x) {

26. assert (x> 0);

27. switch(x) {

28. case 2: x= 3;

29. default: assert false; } }

30.

31. private void stuff2(int y) { assert (y < 0); }

32.

33. private void stuff3() { assert (stuff4()); }

34.

35. private boolean stuff4…

首先,这道题问的是哪些行的断言的使用是适当的,而并不是能够通过编译的。

实际上,代码是可以编译通过的。

问题是要找出哪些的用法是恰当的。

断言的使用,有如下几个原则:

1.不要使用断言验证公共方法的参数。

2.可以使用断言验证私有方法的参数。

3.不要使用断言验证命令行参数

4.在公共方法内,可以使用断言检查从不会发生的情况

比如,switch中的default

像下面的应用就是适当的

Java code

switch(x){

case 1:

y=1;

break;

case 2:

y=2;

break;

default:

assert false;

}

你可以假设x为1或者2,所以default可以认为是不可到达的,这个时候可以使用断言

5.不要使用可能产生副作用的断言

也就是断言表达式应该使程序保持在进入它之前的状态。

所以,根据上述5点,

可以判断出

26行的断言使用不恰当,因为它是用来验证了一个公共方法。

29行的也不恰当,因为28行的后面并没有break语句,也就是说如果进入了case2,则一定会执行default的内容

31行的使用是正确的,因为用断言验证的是一个私有的方法

33行的使用是不恰当的,因为stuff4()肯定返回一个false,所以33行肯定会抛出AssertionError,这个违反了第5个原则

综上所述,偶认为答案是 B

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值