Java 断言(assert)

参考 http://lavasoft.blog.51cto.com/62575/43735/
一、概述
C/C++语言中都有assert关键,表示断言。
在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。

二、简要介绍
Java1.4中新增了一个关键字:assert。注意点如下:
(1)为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。
(2)assert断言失败,意味着程序会直接崩溃并退出。

三、语法形式
1、assert <boolean表达式>

如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。

2、assert <boolean表达式> : <错误信息表达式>

如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。

四、代码实战

public class AssertDemo {
    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!");
    }
}

五、使用方式
记住:无论是Eclipse还是命令行的方式,默认都是没有开启断言的。
1、Eclipse
(1)直接执行程序,默认不会执行断言。
这里写图片描述
(2)Eclipse开启断言

右键 -> Run As -> Run Configurations... ->Arguments选项卡 -> VM arguments中添加-ea-enableassertions参数 -> Run -> 会发现打印出断言中的错误了

Run Configurations
Arguments选项卡 -> VM arguments中添加-ea或-enableassertions参数
这里写图片描述
2、命令行
(1)编译程序

javac AssertDemo.java

(2)执行程序(没有开启-ea开关)

java AssertDemo

java AssertDemo
(3)执行程序(开启-ea开关)

java -ea AssertDemo

java -ea AssertDemo

六、建议
      assert既然是为了调试测试程序用,不在正式生产环境下用,应该考虑更好的JUint单元测试来代替。因为从上面的例子可以看到assert信息被包含在生成的class文件里面,这样很可能会增大应用程序的体积。
      另外注意:使用javac,默认使用的release方式,而我们经常使用的MyEclipse工具,用的是debug模式。
      经过试验可以看出:无论是”-g:none”(不生成任何调试信息) 还是 “-nowarn”(不生成任何警告)都不能阻止assert被打包进class。
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值