java 断言assert_java断言assert的使用

本文详细介绍了Java中的断言机制,包括如何通过-ea和-da标志开启和关闭断言,以及assert关键字的两种使用形式。当assert后的布尔表达式为false时,程序会抛出AssertionError并可能附带错误信息。示例代码展示了断言在不同配置下的运行效果。
摘要由CSDN通过智能技术生成

一、assert的开启和关闭

因为JVM默认是不启动assert的。因此,你可以使用标记–enableassertions(缩写-ea)来开启断言功能。同样,你也可以使用标记–disableassertions(缩写-da)来关闭断言功能。例:

java -enableassertionsAssertTest

二、assert的使用

在语法上,为了支持assertion,Java增加了一个关键字assert。它包括两种表达式,分别如下:

assert expression1;

assert expression1: expression2;

在两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object) ,基本类型包括boolean,char,double,float,int和long。由于所有类都为Object的子类,因此这个参数可以用于所有对象。

1、assert

如果为true,则程序继续执行。

如果为false,则程序抛出AssertionError,并终止执行。

2、assert :

如果为true,则程序继续执行。

如果为false,则程序抛出java.lang.AssertionError,并输出。

1.assert true/false;当为false时,抛出错误,结束程序

2.assert true/false : "error info";当为false时,抛出错误,结束程序,并输出提示信息"error info"

语义含义

在运行时,如果关闭了assertion功能,这些语句将不起任何作用。如果打开了assertion功能,那么expression1的值将被计算,如果它的值为false,该语句强抛出一个AssertionError对象。如果assertion语句包括expression2参数,程序将计算出expression2的结果,然后将这个结果作为AssertionError的构造函数的参数,来创建AssertionError对象,并抛出该对象;如果expression1值为true,expression2将不被计算。

一种特殊情况是,如果在计算表达式时,表达式本身抛出Exception,那么assert将停止运行,而抛出这个Exception。

三、兼容

JDK 1.4的默认编译模式并不支持断言,因此它的编译需要:

javac -source 1.4 Assert.java

Java代码

publicclassAssertTest {

publicstaticvoidmain(String[] args) {

System.out.println("----start---");

intvalue=-1;

assert0

System.out.println("----end----");

}

}

输出:

D:\java\editplus>javac -d . AssertTest.java

D:\java\editplus>java -enableassertions AssertTest

----start---

Exception in thread "main" java.lang.AssertionError: value=-1

at AssertTest.main(AssertTest.java:8)

D:\java\editplus>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值