我们知道C/C++语言中有断言的功能(assert)。在Java SE 1.4版本以后也增加了断言的特性。

断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。

默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableassertions或者-da关闭断言(默认情况,可有可无)。

断言的使用:

断言是通过关键字assert来定义的,一般的,它有两种形式。

1. assert ;       比如     boolean isStudent = false; assert isStudent;

2. assert : ;    比如  boolean isSafe = false;  assert isSafe : "Not Safe at all";

光说无用,举几个简单的例子:

第一种形式:

public classAssertionTest {public static voidmain(String[] args) {boolean isSafe = false;assertisSafe;

System.out.println("断言通过!");

}

}

如果是在命令行模式下运行,需要指明开启断言功能。如

java -ea AssertionTest

如果是在IDE下,比如Eclipse,可这样设置: Run as -> Run Configurations -> Arguments -> VM arguments:敲入-ea即可。

输出结果:

Exception in thread "main" java.lang.AssertionError

at AssertionTest.main(AssertionTest.java:8)

第二种形式:

public classAssertionTest {public static voidmain(String[] args) {boolean isSafe = false;assert isSafe : "Not safe at all";

System.out.println("断言通过!");

}

}

输出结果:

Exception in thread "main" java.lang.AssertionError: Not safe at all

at AssertionTest.main(AssertionTest.java:7)

第二种形式和第一种的区别在于后者可以指定错误信息。

陷阱:

断言只是为了用来调试程序,切勿将断言写入业务逻辑中。比如考虑下面这个简单的例子:

public classAssertionTest {public static voidmain(String[] args) {assert ( args.length > 0);

System.out.println(args[1]);

}

}

该句assert (args.length >0)和if(args.length >0)意思相近,但是如果在发布程序的时候(一般都不会开启断言),所以该句会被忽视,因此会导致以下

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

at AssertionTest.main(AssertionTest.java:7)

更好的替代品:

JUnit。

java assert 断言_Java 之 assert (断言)相关推荐

  1. java高级断言_Java之断言

    转自博客:http://blog.csdn.net/tanga842428/article/details/52463694 一.语法形式 Java在1.4中新增了一个关键字:assert.在程序开发 ...

  2. java assert函数_Java Assert 用法简介

    在JDK1.4中增加了Assert的新功能,用于开始.调试时期的错误检测,它可以通过-ea 的JVM参数关闭,关闭以后对程序的性能没有任何影响. 最好的教程 请见:http://java.sun.co ...

  3. php assert or,什么是PHP断言(assert)?该如何使用?

    PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神通广大. 本文基于 PHP Version 7.1.28 一.什么是断言 编写程 ...

  4. python断言assertequal_python中那个断言assert的优化

    Python Assert 为何不尽如人意# Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛出异常. Copy >>> assert ...

  5. python断言assert实例_python接口测试assert断言

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! unittest.texttestrunner(verbosity=2).run ...

  6. c语言中assert函数,C++ 中assert断言函数的基本用法

    在我们的实际开发过程之中,常常会出现一些隐藏得很深的BUG,或者是一些概率性发生的BUG,通常这些BUG在我们调试的过程中不会出现很明显的问题,但是如果我们将其发布,在用户的各种运行环境下,这些程序可 ...

  7. Java基础の乱弹琴一:assert关键字

    一.概述 assert:表示断言 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默 ...

  8. java assert false_Java陷阱之assert关键字

    Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...

  9. java高效代码_Java工程师该如何编写高效代码?

    在调试 JS 代码时,很多人倾向于使用 alert() 或者 console.log() 方法来输出信息,正如某些 Java 程序员喜欢在调试代码时使用System.out.println() 输出信 ...

  10. 描述java源程序构成_Java第二章Java程序设计

    <Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...

最新文章

  1. 实践学习:首次项目合作
  2. HTTP协议与TCP/IP协议的关系
  3. LeetCode01_二分法专题
  4. 用图解释RNN运行的部分过程
  5. 我是一名Cisco爱好 者
  6. 精确到秒的JQuery日期控件,jquery日历插件,jquery日期插件
  7. iOS Xcode8的适配
  8. php事务处理深入学校,php事务处理实例详解
  9. 在MOSS 2007中查看文档库和站点的大小
  10. 【2016年第4期】大数据时代的简约计算
  11. ios上input框上边有阴影
  12. Java ADF Template程序不能连接ArcGIS Server问题
  13. 【渝粤教育】国家开放大学2019年春季 7407药物治疗学(本) 参考试题
  14. c语言模拟题第五套,2013年计算机二级C语言考试全真模拟试题第五套
  15. [Android] Windows 7下 Android studio 安装 Genymotion 来调试 Android 遇到的问题总结
  16. gif制作软件 ScreenToGif
  17. 已非昔日阿蒙!21世纪柴油发动机详解
  18. python 矩阵和三角函数
  19. html表格table表头和首列固定
  20. 解决CSR 8510 A10蓝牙适配器驱动安装不正常问题

热门文章

  1. C语言:十进制、BCD码互换
  2. python socketserver实现tcp post,get请求
  3. 未来发展人工智能的意义是什么?
  4. vmsysjack-tupian
  5. 基于vue的个人博客
  6. gentoo Cataclysm - Dark Days Ahead
  7. 最健康的饮料--茶的杂谈
  8. 计算机专业 论文检索,精选】计算机专业文献检索论文参考选题
  9. 杨帅浙江大学计算机,2013届浙江大学优秀毕业研究生.DOC
  10. 基于LabVIEW的WIFI通信人机交互界面设计