首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

黑马软件工程师 java assertion断言

2013-02-24 
黑马程序员 java assertion断言----------android培训、java培训、java学习型技术博客、期待与您交流! ------

黑马程序员 java assertion断言

----------android培训、java培训、java学习型技术博客、期待与您交流! ----------
核心思想

{P}S{Q}表示程序的正确性断言.

S表示程序代码段,P(前置断言)和Q(后置断言)分别是S执行前后应该满足的断言。

P(前置断言)刻画了程序执行前应该满足的条件;

Q(后置断言)刻画了程序执行后应该满足的条件。

断言{P}S{Q}的含义:

如果满足P为真则S必定在有限步骤内终止,且终止时Q必定为真。

应用于计算机语言

Assertion(断言)功能在J2SE 1.4版本时引入的,是一种为方便调试而引入的语法机制(也可以说就是一种调试机制)。assert从J2SE1.4开始被作为关键字保留。

为什么需要断言

这里你可能会问:我们不是有调试方法吗(在eclipse中设置断点追踪变量),为什么需要断言来方便调试呢?

你想一下:你开发了一款产品(假设产品中代码分为 B C两段),过了一段时间后客户跟你讲有bug需要你进行维护,你发现需要修改C段的代码,但是你能确定修改了C段后不会影响B段的代码运行结果吗,按照我们以前的测试方式的话你就只有把B段也进行测试吧;好,就算要把B段按照以前的输出语句或断点和逻辑判断来从新测试,可是这些信息没有保存呀,隔了这么久了你也可能忘了,这是不是一件相当麻烦的事。而assertion(断言)就可以比较好的解决这个问题。

语法形式(两种)

assert bool_expression1;

// bool_expression1为逻辑表达式,结果只能为true;若为false,将抛出AssertionError异常。

assert  bool_expression1: expression2;

// 若bool_expression1结果为false抛出异常并且把expression的结果转化为String类型打印出来

运行

在运行时,我们可以选择开启assertion功能,或者不开启,另外我们还可以开启一部分类或包的assertion功能,所以运行选项变得有些复杂。

Java  -ea  Test.class      // [-ea]参数:启动断言(执行时才会去检测断言的真假)

Java  -da  Test.class             //  [-da]参数:关闭断言(执行时忽略断言语句)

 

参考:

欧阳晨和周欣写的深入解析Java的新特性assertion

华志章老师的《Java语言程序设计》

热点排行