一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情。
什么是断言
在 JDK1.4 中,断言作为一种新机制被引入,用于测试和调试我们的程序。本质上断言是在运行时执行的可编译实体,启用断言进行程序测试,可以大大减少在调试失败程序时花费的时间。
在Java中,你可以利用assert关键字来启用断言。断言在程序中执行时被假定为真,如果它是假的,程序会抛出一个断言错误AssertionError并终止 。
如何使用断言
断言assert后面是一个始终被认为是真的表达式,以及一个在评估为假时要显示的信息,用冒号:分隔。
public static void main(String[] args) {
Person p = new Person(30, "John Doe");
int age = p.getAge();
String name = p.getName();
assert name != null : "Name = (null)";
assert age >= 0 : "Age is negative.";
System.out.println(name.toUpperCase() + " - " + age);
}
第5、6行即为断言语句,可以理解为我们假设name不等于Null,我们期望这里的age应该是大于等于0.
-Enableassertions 选项以启用断言
必须指定 -enableassertions 选项才能启用断言。
如果在没有选项的情况下运行它,断言将被忽略。
在 Idea 中设置 -enableassertions / -ea
在 Idea 中,从 Run 菜单中的 Edit Configurations ... 打开 Run Options Settings 屏幕。
现在将 VM 选项设置设置为选项-enableassertions或-ea以启用断言。
使用断言时的注意事项
断言不是错误处理
Assert不是“错误处理”,所以使用时要小心。
例如,考虑执行“打开文件”操作的情况。打开文件的操作可能会打开也可能不会打开,当然必须假设它。这不是通过断言“假设可以打开文件”之类的东西。
确保assert的有无不影响程序的处理
只有在启用断言时才会执行断言。尽可能有效地使用它进行调试。必须注意执行结果不会根据断言的存在或不存在而改变。
public class AssertTest1 {
public static void main(String[] args) {
int n = 0;
assert ++n > 0;
System.out.println("n = " + n);
}
}
在此代码中,n的最终值将根据断言是否启用而改变。在正常执行期间(禁用断言),n保持为0,启用断言时,n为1。
小心不要在断言启用和未启用时更改局部变量的值。
以上就是assert的含义和用法。