标签:
作用:其实就是用来调试程序的,不过目测使用的很少。
先来看两个例子,然后再来解释:
1 public class TestAssert{ 2 public static void main(String[] args){ 3 TestAssert ta = new TestAssert(); 4 ta.Test(-99); 5 } 6 7 public void Test(int age){ 8 //assert关键字,再加一个布尔表达式,但表达式结果为false时,程序就会退出 9 //并抛出一个AssertionError,所以断言是error级别的 10 assert age>=0;//满足条件则继续运行 11 System.out.println("继续执行,输入的年龄是:"+age); 12 } 13 }
首先编译 javac TestAssert.java
然后正常执行: java TestAssert,结果是:
启动断言, java -ea TestAssert ,结果是:
或者使用 java -enableassertions TestAssert,结果是一样的:
可以看到,抛出的类型是 java.lang.AssertionError
至于显式关闭断言的命令就不测试了,个人感觉那是脱裤子放屁的事,有兴趣的可以自己测试一下。
还是使用上面的类 TestAssert,稍作修改:
1 public class TestAssert{ 2 public static void main(String[] args){ 3 TestAssert ta = new TestAssert(); 4 ta.Test(-99); 5 } 6 7 public void Test(int age){ 8 //assert关键字,再加一个布尔表达式,但表达式结果为false时,程序就会退出 9 //并抛出一个AssertionError,所以断言是error级别的 10 assert age>=0:"不能输入这种不合理的年龄啊";//满足条件则继续运行 11 System.out.println("继续执行,输入的年龄是:"+age); 12 } 13 }
首先编译 javac TestAssert.java
然后正常执行: java TestAssert,结果是:
因为默认没开启断言,所以结果还是跟上面一样,
启动断言, java -ea TestAssert ,结果是:
很明显,结果中输出了我们刚刚写的字符串,这样可以增强可读性
或者使用 java -enableassertions TestAssert,结果是一样的:
java -ea TestAssert ----(ea就是enable和assertions的缩写)
或者:java -enableassertions TestAssert
java -da TestAssert
或者:java -disableassertions TestAssert
3.1. 普通格式 assert 布尔表达式;
eg: int a = 0;
assert a>100;
3.2. 增强格式 assert 布尔表达式:"字符串";
标签:
原文地址:http://www.cnblogs.com/tommy-huang/p/4285586.html