断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制,目前很多开发语言都支持这种机制。
它的主要作用是对一个 boolean 表达式进行检查,一个正确运行的程序必须保证这个 boolean 表达式的值为 true,若 boolean 表达式的值为 false,则说明程序已经处于一种不正确的状态下,系统需要提供告警信息并且退出程序。
在实际的开发中,assert 主要用来保证程序的正确性,通常在程序开发和测试时使用。为了提高程序运行的效率,在软件发布后,assert 检查默认是被关闭的。
asset 包括两种表达式,分别为 assert expression1 与 assert expression1:expression2,其中,expression1 表示一个 boolean 表达式,expression2 表示一个基本类型或者是一个对象,基本类型包括 boolean、char、double、float、int 和long。以下是对这两个表达式的应用。
package Text;
public class demo1 {
public static void main(String[] args) {
assert 1+1==2;
System.out.println("assert1 ok");
assert 1+1==3 :"assert faild,exit";
System.out.println("assert2 ok ");
}
}
对与上述代码,当执行Javac demo1.java与java demo1时,程序的输出结果为:
对与上述代码,当执行Javac demo1.java与java - ea demo1时(注意:Java- ea demo1的意思是打开-ea开关),程序的输出结果为:
assert 的应用范围很多,主要包括①检查控制流;②检查输人参数是否有效;③检查函
数结果是否有效;④检查程序不变量。虽然 assert 的功能与 if 判断类似,但二者存在着本质的
区别:assert 一般在调试程序时使用,但如果不小心用 assert 来控制了程序的业务流程,那在
中使用的是库函数;② C语言中的 assert是在编译时开启,而 Java 语言中则是在运行时开多多
调试结束后去掉 assert 就意味着修改了程序的正常逻辑,这样的做法是非常危险的;而i判断
是逻辑判断,本身就是用以控制程序流程的。
需要注意的是,在 Java 语言中,assert 与 C 语言中的 assert尽管功能类似,但也不完全一
样,具体表现为两个方面的不同:① Java 语言中是使用 assert 关键字去实现其功能,而C语言中使用的是库函数; ②C语言中的assert是在编译时开启,而Java是在运行时开启。