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的使用方式
- assert expression;
- 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适用场景
- 在预计正常情况下程序不会到达的地方 : assert false;
- 可用于检查private方法的参数值
- 用于测试方法的前置条件和后置条件
- 用于检查类的不变状态, 确定在任何情况下, 某个变量状态必须满足
4. assert不适用场景
- 不要使用assert作为public方法的参数检查, public方法的参数永远都要执行
- assert语句不可有任何边界效应, 不要使用assert语句去修改变量和改变方法的返回值。
总结 :
assert通常用于检查一些对程序有很大影响的关键值, 表达式应短小易读。适用于private方法参数值检查。
Java 关于assert的更多相关文章
- K:java 断言 assert 初步使用:断言开启、断言使用
@转自天地悠悠的个人博客 主要总结一下在eclipse中如何使用断言. (一)首先明确: java断言Assert是jdk1.4引入的. jvm 断言默认是关闭的. 断言是可以局部开启的,如:父类禁止 ...
- java断言assert初步使用:断言开启、断言使用
1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. 断言可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”. 断言只适用复杂的调式过程. ...
- 01 java断言assert初步使用:断言开启、断言使用
参考文件:http://blog.sina.com.cn/s/blog_59c9412d0100fd55.html 1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. ...
- Java中assert(断言)的使用
Java中assert(断言)的使用 1.Eclipse中默认assert(断言)是关闭,开启方式如下: 简单来说:就是设置一下jvm的参数,参数是-enableassertions或者-ea(推荐) ...
- java 关键字 assert的学习
之前在学习java源码时,发现了assert这个不常用的关键字.下面直接来介绍下这个关键字的使用. assert是什么? 它是jdk1.4之后新增加的关键字,没了. assert的作用是什么? ass ...
- 14)Java中Assert
J2SE 1.4在语言上提供了一个新特性,就是assertion(断言)功能,它是该版本在Java语言方面最大的革新.在软件开发中,assertion是一种经典的调试.测试方式. jvm 断言默认是关 ...
- Java断言assert
public class Welcome{ public static void main(String[] args){ assert false; System.out.println(" ...
- 关于java中assert(断言)的使用讲解
说明:写的不是很全面,有任何问题请留言,多交流,谢谢! 1.eclipse.myeclipse开启assert(断言),默认是关闭,如下: 说白了就是设置一下jvm的参数,参数是-ea或者-enabl ...
- Java 之 assert (断言)
我们知道C/C++语言中有断言的功能(assert).在Java SE 1.4版本以后也增加了断言的特性. 断言是为了方便调试程序,并不是发布程序的组成部分.理解这一点是很关键的. 默认情况下,JVM ...
随机推荐
- [Algorithms] Graph Traversal (BFS and DFS)
Graph is an important data structure and has many important applications. Moreover, grach traversal ...
- EXCEL自动导出HTML
话说博主我以前总是为资料共享的问题发愁,刚才鼓捣了一下EXCEL.发现有个功能还是不错的'发布' 以OFFICE2013为标准吧. 点击文件--导出-- 更改文件类型---另存为--(网页)htm 点 ...
- 170118、快速失败Vs安全失败(Java迭代器附示例)
简介: 当错误发生时,如果系统立即关闭,即是快速失败,系统不会继续运行.运行中发生错误,它会立即停止操作,错误也会立即暴露.而安全失败系统在错误发生时不会停止运行.它们隐蔽错误,继续运行,而不会暴露错 ...
- Spring Context及ApplicationContext
web.xml 这是声明了一个父工厂 <context-param> <param-name>contextConfigLocation</param-name> ...
- python文件上传工具实现
0x00 之前验收waf模块webshell效果,组网pc--waf--webserver,收集网络上的webshell样本,进行上传测试.由于数量较多8000+个样本, 只好写了个工具进行验收. w ...
- Storm 架构图
画的丑,勉强看看吧 Nimbus我感觉他就像人的大脑一样! 当客户端给这个人发送了段信息 ,这个人的大脑就接收到这段信息,这个人不简单,是幕后大佬,一般不自己去干活,都是交给下面二当家去执行,当时这个 ...
- 12.php中无比坑爹的构造函数。
当你在php类中,写一个构造方法时,记得,一定要用__这是两个下划线,而不是一个.......... <?php class Car { // function _construct() { / ...
- Tomcat 服务器介绍
Tomcat 目录介绍 Tomcat 主目录有 bin, conf, lib, logs, temp, webapps, work 7个文件夹 bin 目录 主要用来存放 tomcat 命令 .sh ...
- [luogu4556]雨天的尾巴
[luogu4556]雨天的尾巴 luogu 发现是一顿子修改然后再询问,那么把修改树上差分一下再线段树合并 但是... 如果你只有35分... https://www.luogu.org/discu ...
- Windows Server 2016 下执行定时任务(英文系统)
Step1. 找到“控制面板(Control Panel)” 打开 “管理工具(Administrative Tools)” Step2. 打开“任务计划(Task Schedule)” Step3. ...