• Java 关于assert


    昨天在看NIO源码的时候,看到这样一句,顿时懵逼了 : 

    assert (i >= 0);

    assert关键词我是有映像的, 中文叫断言。但是从来没有去了解过它的功能, 今天在感冒中抽出时间, 把我总结的码出来:

    1. JVM默认关闭assert, 可通过 -ea 命令开启

        (1) java 命令开启assert

             java -ea $classname

        (2) eclipse中开启assert

             在项目上右击 Run As -> Run Configurations -> Arguments Tab 在VM arguments中填入 -ea  再Apply

     或者 Window -> Preferences -> Java -> Installed JREs 选中JDK点击 Edit, 在Default VM arguments: 中输入 -ea  再Finish

    2. assert的使用方式

    1.    assert expression;
    2.    assert expression1 : expression2; 

              expression2 是作为 java.lang.AssertionError 的errorMsg. 

     assert (1>2) : (1>2?"correct":"This is the errorMsg");
     System.out.println("success");

      Exception in thread "main" java.lang.AssertionError: This is the errorMsg

              (oh shit, 这蛋疼得编辑器,还没用习惯) 

    3. assert适用场景

    1.    在预计正常情况下程序不会到达的地方 : assert false;
    2.    可用于检查private方法的参数值
    3.    用于测试方法的前置条件和后置条件
    4.    用于检查类的不变状态, 确定在任何情况下, 某个变量状态必须满足

    4. assert不适用场景

    1.    不要使用assert作为public方法的参数检查, public方法的参数永远都要执行
    2.    assert语句不可有任何边界效应, 不要使用assert语句去修改变量和改变方法的返回值。

    总结 : 

       assert通常用于检查一些对程序有很大影响的关键值, 表达式应短小易读。适用于private方法参数值检查。

  • 相关阅读:
    2016多校赛1 A 期望 B SG博弈,状压 D 倍增,二分
    POWOJ 1739: 魔术球问题 DAG最小路径覆盖转最大流
    Codeforces 743D 树形dp
    线性规划与网络流24题 索引
    WangEditor富文本编辑器的简单使用,并将文本数据发往后台
    SSRF
    关于Blind XXE
    blind xxe攻击
    linux awk命令详解
    kali
  • 原文地址:https://www.cnblogs.com/djoel/p/5565954.html
Copyright © 2020-2023  润新知