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!");
}
}
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章