zoukankan      html  css  js  c++  java
  • 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方法参数值检查。

  • 相关阅读:
    RAM调优之日志分析
    HDU Always Cook Mushroom (极角排序+树状数组)
    并非全部的程序猿都适合做技术管理
    HTTP Header具体解释
    Linux 通配符
    寻找正在连接中的网络连接
    hdu 1052 田忌赛马
    linux上电自启动应用程序具体解释
    C++ 中的 const 类型变量
    FileUtil
  • 原文地址:https://www.cnblogs.com/djoel/p/5565954.html
Copyright © 2011-2022 走看看