- 浏览: 127403 次
文章分类
- 全部博客 (121)
- confluence (1)
- android (77)
- PHP (6)
- java (21)
- mysql (3)
- dos (1)
- 传感器 (2)
- 获取电话薄信息 (3)
- 正则表达式 (1)
- 网络 (1)
- 蓝牙 (1)
- 图片 (4)
- intent (3)
- 注意 (1)
- eclipce (1)
- plugins (1)
- dialog (4)
- zip (1)
- sd卡 (1)
- ui (1)
- Camera (1)
- draw (1)
- activity (2)
- launchMode (1)
- 安全 (1)
- Button (1)
- ImageTextButton (1)
- paint (1)
- network (1)
- popupwindow (1)
- jquery (1)
- ant (1)
- notifaction (1)
- Rating (1)
- ListView (3)
- editText (1)
- doc (1)
- jdk (1)
- animation (1)
- sign (1)
- 签名 (1)
- 广播 (1)
- textview (4)
- 删除线 (1)
- 城市列表 (1)
- IDE (1)
- Eclipse (1)
- pixels (2)
- px (1)
- 静默安装 (1)
- Android截屏 (1)
- eclipcetheme (1)
- scroll (1)
- ActivityGroup (1)
- sqlite (1)
- webview (3)
- PullToRefreshListView (1)
- cache (1)
- java引用 (1)
- 命名空间 (1)
- httpClient (1)
- 开源控件 (0)
- sms (1)
- 文字水平滚动 (1)
- 正则 (1)
- 理论知识 (1)
- 属性 (0)
- openfire (1)
- 面试 (1)
- 继承的优缺点 (1)
- PowerDesigner (1)
- 数字格式化 (1)
- andriod (1)
- webservice (1)
- 记录 (0)
- share (0)
- 开源 (1)
最新评论
常见的断言特性
前置条件断言:代码执行之前必须具备的特性
后置条件断言:代码执行之后必须具备的特性
前后不变断言:代码执行前后不能变化的特性
断言使用方式
断言可以有两种形式
1.assert Expression1
2.assert Expression1:Expression2
其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。
起用断言
断言在默认情况下是关闭的,要在编译时启用断言,需要使用source1.4标记 既javac source1.4 Test.java ,在运行时启用断言需要使用 -ea参数 。要在系统类中启用和禁用断言可以使用 -esa 和 -dsa参数。
例如:
public class AssertExampleOne{
public AssertExampleOne(){}
public static void main(String args[]){
int x=10;
System.out.println("Testing Assertion that x==100");
assert x==100:"Out assertion failed!";
System.out.println("Test passed!");
}
}
如果编译时未加 -source1.4,则编译通不过
在执行时未加 -ea 时输出为
Testing Assertion that x==100
Test passed
jre忽略了断言的就代码,而使用了该参数就会输出为
Testing Assertion that x==100
Exception in thread "main" java.lang.AssertionError: Out assertion failed!
at AssertExampleOne.main(AssertExampleOne.java:6)
断言的副作用
由于程序员的问题,断言的使用可能会带来副作用 ,例如:
boolean isEnable=false;
//...
assert isEnable=true;
这个断言的副作用是因为它修改了程序中变量的值并且未抛出错误,这样的错误如果不细心的检查是很难发现的。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它来测试断言是否打开。
public class AssertExampleTwo{
public static void main(String args[]){
boolean isEnable=false;
//...
assert isEnable=true;
if(isEnable==false){
throw new RuntimeException("Assertion shoule be enable!");
}
}
}
何时需要使用断言
1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false
2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
3.使用断言测试方法执行的前置条件和后置条件
4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)
什么地方不要使用断言
断言语句不是永远会执行,可以屏蔽也可以启用
因此:
1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值
参考:
http://jcp.org/en/jsr/detail?id=41
http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html
http://www-128.ibm.com/developworkers/cn/java/jdiag0723/
http://www-128.ibm.com/developworkers/cn/java/jmerlin/part9/
来自:http://www.blogjava.net/liulu/archive/2006/10/24/77005.html
发表评论
-
数字格式化
2013-12-17 11:32 578今天复习了下jdk的api。 ... -
java 基础
2013-12-13 10:33 340继承的优缺点1.优点: 代码共享,减少创建类的工作量,每个子 ... -
使用java jdk 制作签名
2013-07-05 09:28 756使用jdk提供的工具 keytool keytoo ... -
java JDK 版本列表
2013-06-27 22:38 796http://www.oracle.com/technetw ... -
ANT 理解
2013-05-07 12:41 547在学习struts+spring+hibernate,尤其是 ... -
DES3加密
2013-03-14 17:12 863public class DES3 { priva ... -
java 字符串zip压缩与解压缩
2013-02-23 17:06 955// 压缩 public static Stri ... -
为Eclipce安装jar反编译插件
2013-01-10 14:38 1106目的:做个记录,怕下次搞忘求. 反编译插件URL:http: ... -
android 蓝牙
2012-12-04 14:21 799对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Andro ... -
2011-09-25 11:03 Android-开启和关闭wifi的代码段
2012-12-03 11:31 7711·申请权限: android.permission. ... -
Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
2012-12-03 11:25 757获取网络连接状态 随着3G和Wifi的推广,越来越多的And ... -
Android GPS开启与否检测
2012-12-03 10:25 968最近做一个项目:利用到GPS,用户希望在手机GPS未开启的 ... -
JAVA 获取系统编码
2012-12-01 15:45 766package encoding; publi ... -
手机号码和电话号码的正则表达式
2012-11-18 10:42 1466^[\u4E00-\u9FA50-9a-zA-Z_-]{0, ... -
管理配置文件
2012-11-12 14:59 727建立管理读取配置文件类: public class Conf ... -
Quartz学习 1
2012-11-12 14:55 0Quartz让作业调度简单 Quartz是一个完全由ja ... -
mysql字符集查看以及修改
2012-11-07 10:38 7851.查找MySQL的cnf文件的位置 find / -ina ... -
MySQL数据库编码问题(转载)
2012-11-07 10:19 631在程序开发中,有时会 ... -
spring REST中的内容协商(同一资源,多种展现:xml,json,html)
2012-10-30 10:53 982来自:http://www.blogjava.ne ... -
设置tomcat 默认编码
2012-10-29 16:44 658在tomcat/conf/server.xml中找到 ...
相关推荐
Java JDK 1.4是Java开发工具包的一个重要版本,它为开发者提供了丰富的编程接口(API),涵盖了Java语言的核心库、标准扩展库以及一些重要的新特性。本手册是针对这个版本的中文翻译,旨在帮助中国开发者更好地理解...
Java断言是从 JDK 1.4 引入的,默认情况下是关闭的。断言可以在局部开启,但它不具备继承性,即父类可以禁止断言,而子类可以开启断言。 断言的使用场景 断言主要用于复杂的调试过程,用于程序执行结果的判断。断言...
《Java开发者年鉴1.4》是一部专门为Java程序员编写的参考手册,包含了丰富的Java编程知识。这个RAR压缩包内含的文件是"The Java Developers Almanac 1.4.chm",这通常是一个CHM(Compiled Help Manual)格式的文件,...
**Java Development Kit (JDK) 1.4:历史、特性与重要性** JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用程序的软件开发工具包,它包含了编译器、调试器、文档和Java运行环境等必要组件。JDK 1.4...
`-source 1.4`指明了使用的Java编译器版本为1.4,而`-ea`(或`-enableassertions`的缩写)用于在运行时开启断言检查。 第二个示例程序是`AssertExampleTwo`类: ```java public class AssertExampleTwo { public ...
总结来说,JDK 1.4绿色版是Java编程的一个重要里程碑,它的新特性和改进极大地推动了Java技术的发展,而绿色版则为开发者提供了更便捷的使用体验。对于学习和研究早期Java技术或者需要在不支持新版本的环境中运行旧...
这个概念在【标题】"Java中断言使用案例"中被强调,而【描述】进一步指出文档会探讨使用断言的优势及其用法。下面将详细阐述Java中断言的原理、好处以及如何使用。 1. **什么是Java断言**: Java断言是一种机制,...
JAVA断言技术详解,1、What will happen when you attempt to compile and run the following code? (Assume that the code is compiled and run with assertions enabled) 1. public class AssertTest 2. { 3. ...
Java 1.4是在Java 2平台标准版(J2SE)的基础上发布的,它引入了一些重要的新特性和改进,包括: 1. **异常链**:异常链允许一个异常实例引用另一个引发它的异常,使得调试和问题定位更加方便。 2. **断言...
本文将主要围绕Selenium在Java环境下的断言操作进行详细阐述,并结合其他相关知识点进行扩展。 断言在软件测试中扮演着至关重要的角色,它是验证预期结果与实际结果是否一致的关键步骤。在Selenium中,我们可以通过...
### Java发展史与Java 9、10新特性详解 #### Java发展史 Java自1995年由Sun Microsystems发布以来,历经多个版本的发展和完善,成为当今最受欢迎的编程语言之一。下面简要回顾Java的发展历程及其重要里程碑: - *...
**Java Development Kit (JDK) 1.4 绿色免安装版详解** JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用...同时,其引入的许多新特性也为后续的Java版本奠定了基础,对整个Java生态产生了深远的影响。
如果你认真学习每个ppt并自己敲完这些实例,你的java基础已经很优秀了!这些资料就是某些大学和培训机构一个学期或更长时间学习的! 为的是共同学习,共同进步! 注:本资料不承担任何法律责任!
尽管1.4版本相对较老,但它是Java发展历史中的一个重要里程碑,引入了如断言(Assertions)、枚举(Enums)等特性。对于学习Java历史或支持遗留系统的人来说,这个版本依然有价值。j2sdk-1_4_2-windows-i586-64.7z...
此外,Java 1.4还引入了断言(Assertions)功能,这对于单元测试和调试代码非常有用,同时增强了异常处理和多线程编程的特性。 然而,随着技术的发展,Java后续发布了多个新版本,如Java SE 5、6、7、8乃至9、10等...
【SCJP 中文大纲sun JAVA2认证程序员 平台1.4】是针对Java编程语言的一项专业认证考试,主要测试考生对于Java 1.4版本的基础知识和技能掌握程度。以下将详细介绍大纲涵盖的主要知识点: **第一部分:声明和访问控制...
总的来说,JDK 1.4是Java发展历程中的一个重要里程碑,它的许多特性在后续的Java版本中继续得到发展和完善,对Java编程语言和平台的演进产生了深远的影响。虽然现在JDK已经更新到了更高的版本,但了解JDK 1.4对于...
### Java 8 新特性教程 #### 一、Lambda 表达式 Lambda 表达式是 Java 8 引入的一项重要新特性,它极大简化了编写匿名内部类的过程,提高了代码的简洁性和可读性。 **基础语法:** 1. **无参数,无返回值:** `...
Java Development Kit...JDK 1.4的特性为现代Java打下了坚实的基础,而JDK 1.7则进一步提升了开发效率和代码质量。对于学习Java历史或者需要在特定环境中运行旧代码的开发者来说,这些版本的JDK都是非常宝贵的资源。
《Java核心技术 第12版》是一本针对Java开发基础和高级特性的详尽教程,适合Java初学者和有经验的开发者。本版已更新至Java 17,涵盖了最新的语言特性。作者Cay S. Horstmann是美国圣何塞州立大学的计算机科学教授,...