可以在预计正常情况下不会达到的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制.在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出.一般来说,assertion用于保证程序最基本、关键的正确性.assertion检查通常在开发和测试时开启.为了提高性能,在软件发布后,assertion检查通常是关闭的.
Java assert详解:
Assert是从JDK1.4才开始引入的,但我使用的是JDK1.6,没试过以前的版本.
assertion 断言一般是在调试程序时使用,特别是使用Junit做单元调试时,更是大量使用assert.
assert有两种语法:
1.assert expre1
exp1必须是返回boolean.
例: public class AsertTest{
public static void main(String args[]){
System.out.println("Assert begin!");
assert false;
System.out.println("Assert end!");
}
运行后得到:
assert为false时,会执出异常,System.out.println("Assert end!");没有执行.当把assert改为true时,程序顺利执行.
2.第二种语法:
assert exp1:exp2
当exp1为true的时候后面exp2被忽略,如果false的话,后面的表达式的结果会被计算出来并作为AssertionError得构造器参数
例:
public class AssertTest {
public static void main(String[] args) {
System.out.println("Assert begin!");
int i=0;
assert i == 0:"123456";
System.out.println("Assert end!");
}
}
运行后i == 0为true,而"123456"被忽略了.
还有就是,运行含有assert语句的java程序.由JDK默认状态是关闭的,所以必须用以下的语句编译执行.
编译:javac -source 1.6 *.java.其中,1.6指java的版本.
执行:java -ea java类