A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 蒋珍珍 于 2014-3-17 09:12 编辑

assert(x=1):"x is "+x;
有关于这个assert的叙述哪一个正确?
A、若x等于1,则输出"x is 1"
B、程序编译错误
C、若x不等于1,则没有输出任何信息
这时关于断言的题目,在一个练习题里看到的,我感觉这里边没有正确答案,谁能帮我解答一下?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
没人回复啊,不过现在我已经明白了。给大家扩展一下哈:)
我在网上查了一下有关断言的知识,断言(assertion)是软件开发中常用的调试方式,它相当于Java中异常处理的一种高级形式。
语法格式有两种:
1、assert 表达式1;
2、assert 表达式1: 表达式2;
其中,表达式1的计算结果是一个boolean值,表达式2的计算结果是一个基本类型数据或是一个对象。
        对于第一种语法格式,当程序运行到这一条断言语句时,表达式1的值将被计算,如果它的值为false,
该语句将抛出一个AssertionError对象,这是一个错误(Error)的子类,程序将终止;如果表达式的结果
的值为true,表示这个断言是正确的,程序可以继续往下执行。
        对于第二种语法格式,如果表达式1的值为false,程序将表达式2的结果作为AssertionError构造器的
参数值创建一个AssertionError对象,并抛出该对象;如果表达式1的值为true,表达式2就不被计算,程序
继续往下执行。

运行时,要打开断言功能,javac -ea AssertTest。

所以选择题中的表达式1(x=1)不合法,应为(x==1)
我写了个程序测试了一下,
  1. /*断言使用测试*/
  2. public class AssertTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int[] arr=creatIntArray(1);
  7.         }
  8.         public static int[] creatIntArray(int x)
  9.         {
  10.                 //assert(x=1):"x is "+x;//括号中的表达式应为布尔类型,所以编译失败
  11.                 assert(x==1):"x is "+x;//x为1时,不输出任何信息,x不为1时,传入值是3时,输出java.lang.AssertionError: x is 3;
  12.                 return new int[x];
  13.         }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
嗯,呵呵!互相分享,共同学习:):handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马