AssertExample.java
 
package org.test;
 
public class AssertExample {
    
    
    
    // -ea java -ea 打开所有用户类的assertion
    // -da java -da 关闭所有用户类的assertion
    // -ea:<classname> java -ea:MyClass1 打开MyClass1的assertion
    // -da:<classname> java -da: MyClass1 关闭MyClass1的assertion
    // -ea:<packagename> java -ea:pkg1 打开pkg1包的assertion
    // -da:<packagename> java -da:pkg1 关闭pkg1包的assertion
    // -ea:... java -ea:... 打开缺省包(无名包)的assertion
    // -da:... java -da:... 关闭缺省包(无名包)的assertion
    // -ea:<packagename>... java -ea:pkg1... 打开pkg1包和其子包的assertion
    // -da:<packagename>... java -da:pkg1... 关闭pkg1包和其子包的assertion
    // -esa java -esa 打开系统类的assertion
    // -dsa java -dsa 关闭系统类的assertion
 
    /** ----------------------------------------------------- */
    // 何时需要使用断言
    // 1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false
    // 2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
    // 3.使用断言测试方法执行的前置条件和后置条件
    // 4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)
    //
    // 勿用断言处
    // 因此:
    // 1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
    // 2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值
 
    /*
     * java断言Assert是jdk1.4引入的。 jvm 断言默认是关闭的。
     * 断言是可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”。 断言只适用于复杂的调试过程。
     * 断言一般用于程序执行结果的判断,千万不要让断言处理业务流程。
     */
    public static void main(String args[]) {
       // 双引号、单引号替换
       String value = "ab'cd'ef\"\"g\"h'ij'klm'n";
       System.out.println(value.replaceAll("'", "´"));
       System.out.println(value.replaceAll("\"", """));
 
       // 断言开启方法:run as....Open Run Dialog....Arguments....VMarguments.....-ea
       // -ea是启用断言-da是禁用断言
       boolean isOpen = false;
       assert isOpen = true; // 如果开启了断言,会将isOpen的值改为true
       System.out
              .println(isOpen ? "开启了断言"
                     : "尚未开启断言:断言开启方法:run as....Open Run Dialog....Arguments....VMarguments.....-ea");
       boolean isOk = 4 > 2;
       assert isOk : "程序错误";
       System.out.println("程序正常");
 
       int x = 100;
       System.out.println("Test Assertion that " + x + "==10");
       assert x == 10 : "assert为false:" + x + "不等于10时输出的结果";
       System.out.println("if true,you can print me!");
 
    }
}