今天在学习AQS的时候,资料上使用到了assert,当时很懵,不知道这是什么意思,就网上一顿找,记录一下学习到的有关assert的知识。
什么是assert
关键字assert表示断言。
java在执行的时候,默认是不启动断言检测的(这个时候所有的断言语句都将被忽略!),如果要开启断言检测,需要用开关 -enableassertions或-ea来开启。
用法
assert关键字的用法很简单,用两种用法:
- assert <boolean表达式>
如果表达式为true,程序继续进行。
如果为false,程序抛出AssertionError,并终止执行。 - assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。
应用实例
public class AssertTest {
public static void main(String args[]) {
//断言1结果为true,则继续往下执行
assert true;
System.out.println("断言1没有问题,Go!");
System.out.println("\n-----------------\n");
//断言2结果为false,程序终止
assert false : "断言失败,此表达式的信息将会在抛出异常的时候输出!";
System.out.println("断言2没有问题,Go!");
}
}
如果想要断言生效,需要使用
C:\>java -ea AssertFoo
开启断言