- 浏览: 1730973 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (288)
- java (59)
- javaweb (15)
- eclipse (16)
- uml (1)
- java ee (7)
- windows (5)
- html (4)
- 数据结构和算法 (6)
- oracle (84)
- struts (3)
- ajax (3)
- hibernate (3)
- spring (12)
- ExtJS (14)
- 随笔 (2)
- JavaScript (9)
- PL SQL (12)
- tomcat (2)
- Plugins (5)
- office (2)
- webService (4)
- others (9)
- htc (1)
- 自定义标签的行为 (1)
- powerDesigner (3)
- webSphere (5)
- linux (6)
- dom4j (1)
- xml (5)
- json (2)
- bat (4)
- spring MVC (5)
- MySQL (12)
- junit (4)
- maven (10)
- jquery (1)
- mongoDB (16)
- git (0)
- mybatis (5)
- svn (3)
- activemq (3)
- quartz_job (1)
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
利用powerDesigner逆向导出oracle表为PDM并把PDM转为CDM -
sanshao:
roompig 写道beancopier只实现了浅拷贝的功能, ...
使用Cglib的BeanCopier实现Bean的拷贝 -
贝塔ZQ:
Java实现导入导出excel文件,利用poi实现感觉代码比较 ...
利用java导入导出excel到oracle数据库 -
suxj16:
部署之后启动有问题org.springframework.be ...
spring mvc文件上传实现进度条(转) -
suxj16:
谢谢分享。部署之后启动有问题org.springframewo ...
spring mvc文件上传实现进度条(转)
assert是在j2se1.4中引入的新特性,assertion就是在代码中包括的布尔型状态,程序员认为这个状态是true。一般来说assert在开发的时候是检查程序的安全性的,在发布的时候通常都不使用assert。在1.4中添加了assert关键字和java.lang.asserterror类的支持。
首先,我们有必要从一个例子说起assert
public class asserttest { public static void main(string[] args) { asserttest at = new asserttest(); at.assertme(true); at.assertme(false); } private void assertme(boolean boo) { assert boo?true:false; system.out.println("true condition"); } }
程序中包含了assert的话,你要用javac -source 1.4 xxx.java来编译,否则编译器会报错的。要想让assert得部分运行的话,要使用java -ea xxx来运行,否则包含assert得行会被忽略。下面我们运行
javac -source 1.4 asserttest.java
java -ea asserttest
看看结果的输出是:
true condition
exception in thread "main" java.lang.assertionerror
at asserttest.assertme(asserttest.java:13)
at asserttest.main(asserttest.java:7)
当我们运行at.assertme(true)得时候,由于assert boo?true:false相当于 assert true;因此没有任何问题,程序往下执行打印出true condition,但是执行at.assertme(false)的时候相当于assert false,这个时候解释器就会抛出assertionerror了,程序就终止了。大家必须清楚assertionerror是继承自error得,因此你可以不再程序中catch它的,当然你也可以在程序中catch它然后程序可以继续执行。例如:
public class asserttest { public static void main(string[] args) { asserttest at = new asserttest(); try { at.assertme(true); at.assertme(false); } catch(assertionerror ae) { system.out.println("asserionterror catched"); } system.out.println("go on"); } private void assertme(boolean boo) { assert boo?true:false; system.out.println("true condition"); } }
assert还有另外一种表达的方式,就是assert exp1:exp2;其中exp1是个boolean返回值得表达式,而exp2可以是原始的数据类型或者对象都可以例如:
boolean boo = true;
string str = null;
assert boo = false:str="error";
我们刚开始讲得assert exp1得形式,当exp1是false得时候,assertionerror得默认构造器会被调用,但是assert exp1:exp2这样的形式,当exp1为true的时候后面exp2被或略,如果false的话,后面的表达式的结果会被计算出来并作为assertionerror得构造器参数。看下面的例子:
public class asserttest { public static void main(string[] args) { asserttest at = new asserttest(); at.assertme(true); at.assertme(false); } private void assertme(boolean boo) { string s = null; assert boo?true:false:s = "hello world"; system.out.println("true condition"); } }
运行的时候会得到这样的结果
true condition
exception in thread "main" java.lang.assertionerror: hello world
at asserttest.assertme(asserttest.java:14)
at asserttest.main(asserttest.java:7)
assert最好不要滥用,原因是assert并不一定都是enable的,下面两种情况就不应该用assert
- 不要再public的方法里面检查参数是不是为null之类的操作
例如public int get(string s) { assert s != null; }
如果需要检查也最好通过if s = null 抛出nullpointerexception来检查 - 不要用assert来检查方法操作的返回值来判断方法操作的结果
例如 assert list.removeall();这样看起来好像没有问题 但是想想如果assert 被disable呢,那样他就不会被执行了 所以removeall()操作就没有被执行 可以这样代替
boolean boo = list.removeal();
assert boo;
就说这么多吧,assert是scjp1.4的考试内容 所以还是有必要了解的
评论
哦?学会了?那给我再讲讲他是怎么用的吧?我还是有一点不明白呢,呵呵,11月3号怎么了?也不是面试那天啊。
发表评论
-
Java List 生成 树(增强版)
2017-03-20 18:29 4564Java List 生成 树:http://ysj51 ... -
在CentOS中安装与配置JDK8
2017-01-14 21:20 948环境准备 系统环境:centos6.5 安装方式:r ... -
Java List 生成 树(转)
2016-03-15 15:47 8746文章出自:http://www.cnblogs.com ... -
使用Cglib的BeanCopier实现Bean的拷贝
2015-12-01 16:49 28933选择Cglib的BeanCopier进行B ... -
解决Java计算浮点数精度问题(BigDecimal)
2015-11-09 17:52 3113工具类如下: package com.yusj.we ... -
JAVA根据IP地址获取详细的地域信息(转)
2015-07-16 14:45 25669文章出自:http://hejianke83.blog ... -
Java获取客户端的真实IP地址(转)
2015-07-15 16:10 3903文章出自:http://newleague.iteye ... -
XML 和 java对象相互转换(转)
2015-07-14 16:43 4021文章出自:http://hbiao68.iteye.c ... -
Java + MongoDB 实现 hello world 例子(译)
2015-04-22 12:18 3965原文出自:http://www.mkyong.com ... -
Java MongoDB 教程(译)
2015-03-16 15:25 1901原文出自:http://www.mkyong.com ... -
过滤有效查询条件的好方法
2014-11-13 17:25 1600在工作中经常遇到明细查询,前段有很多查询条件,但是不 ... -
解决servlet-api包冲突问题(maven)
2014-08-20 10:12 47122问题描述:本人的项目是用Maven管理,而且用到了s ... -
StringUtils中isEmpty 和isBlank的区别(转)
2014-05-27 16:17 11380文章出自:http://www.2cto.com/kf ... -
JDK动态代理实现原理(转)_AOP简介
2014-04-25 16:28 6395文章出自: http://rejoy.it ... -
对只转发结果集的无效操作: isLast
2014-03-13 14:19 2728在遍历结果集的时候,用rs.isLast()来判断是否到达 ... -
利用java导入导出excel到oracle数据库
2013-12-05 14:46 8643用到的JAR包如下(可以直接到POI官网上下载也可以 ... -
循环读取图片入库
2013-11-26 19:50 1597工作总结备份,见代 ... -
linux中查看java进程(转)
2013-11-15 13:29 2013文章出自:http://blog.csdn.net/m ... -
如何在命令行模式下编译运行带包的java文件(转)
2013-03-29 09:10 1848文章出自 : http://blog.sina.com ... -
如何查找Java文件源代码和Jar包
2013-01-07 14:59 1655把已知类名录入到Class的文本框中,点击Search ...
相关推荐
断言可以有多种使用方法,下面是两种常见的使用方法: 1. 简单断言 public static void main(String[] args) { boolean isOk = 1>2; assert isOk; System.out.println("程序正常"); } 在上面的代码中,如果isOk...
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言...
2. **使用方法**:详细介绍不同编程语言中 `Assert` 的用法,如 C++ 中的 `assert()` 函数,Java 中的 `java.util.Assert` 类,C# 中的 `System.Diagnostics.Debug.Assert()` 和 `System.Diagnostics.Trace.Assert()...
标题中提到的“Java陷阱之assert关键字详解”所指的知识点主要涉及Java语言中assert关键字的介绍、使用、限制以及使用时需注意的潜在问题。Assert关键字作为Java SE 1.4版本引入的功能,其设计目的是为了帮助开发者...
例如,在`AssertTest`类的`div`方法中,如果除数为零,会使用`assert`关键字抛出一个异常,并附带自定义消息。 4. **throws** 关键字:在方法签名中使用,表示该方法可能会抛出一个或多个异常。例如,`TryCatchTest...
2. **Assert(断言)**:在Java编程中,`assert`关键字用于在测试阶段检查代码假设是否正确,它是进行单元测试和调试的强大工具。在本项目中,通过扩展Spring Boot的断言功能,我们可以创建自定义的断言方法,以适应...
正确算法 private static int pythagorean(int x, int y) { return x * x + y * y; } 错误算法 private static int pythagorean(int x, int y) { return x * x + y * y +...assert想在IDE中使用,就必须开虚拟机选项
在Android中,`assert`目录是一个特殊目录,用于存放应用的资源文件,这些文件不会在R类中生成引用,但可以通过`getResources().getAssets()`方法访问。加载assert目录下的HTML文件,我们可以这样做: ```java ...
本文档主要介绍如何使用`pinyin4j`库实现Java程序中的汉字到拼音的转换,并着重讲解如何控制转换后拼音的大小写形式。`pinyin4j`是一款功能强大的开源库,能够帮助开发者轻松地将中文字符转换成相应的拼音形式。这...
`return`关键字用于从方法中返回值。 **示例:** ```java public int add(int a, int b) { return a + b; } ``` #### 36. `short` `short`类型用于存储短整型数值。 **示例:** ```java short id = 100; ``` #...
本文将详细介绍Java中的一些核心关键字,并提供相应的解释和示例。 #### 关键字列表 根据给定的部分内容,我们可以列出以下Java关键字: 1. **abstract** 2. **continue** 3. **for** 4. **new** 5. **switch** 6...
这个概念在【标题】"Java中断言使用案例"中被强调,而【描述】进一步指出文档会探讨使用断言的优势及其用法。下面将详细阐述Java中断言的原理、好处以及如何使用。 1. **什么是Java断言**: Java断言是一种机制,...
本教程将介绍如何使用Java将JSON数据转换为HTML格式,以及相关的测试方法。 一、Jackson库的使用 Jackson是Java最常用的JSON处理库之一,它提供了解析JSON、生成JSON以及将Java对象映射到JSON的功能。要将JSON转换...
使用`ToolProvider.getSystemJavaCompiler()`方法可以获取到当前JVM中的Java编译器实例。 2. **构建诊断监听器**: 编译过程中可能产生错误或警告,我们需要一个`DiagnosticListener`来接收这些信息。你可以实现`...
本文将详细介绍如何在Android中从`assets`目录读取数据库,并进行相关操作。 首先,理解`assets`目录的作用。`assets`是Android应用中的一个特殊目录,用于存放原始的、未处理的文件,如文本文件、数据库文件、音频...
Java架构测试库——ArchUnit与最佳实践 在Java开发中,确保代码的架构质量是至关重要的,这有助于维持系统的可维护性、可...在实际项目中,结合最佳实践使用ArchUnit,将有助于打造更加健壮、易于维护的Java应用程序。
在Java编程环境中,许可证(Licence)控制是一个重要的实践,特别是在商业软件开发中,用于确保软件的合法使用和防止非法复制。本示例将聚焦于如何在Java中实现许可证管理功能,通过`KeyGenerater`类和JUnit测试来...
- 在Java中,`String`类并没有`length()`方法,而是使用`length()`属性来获取字符串的长度。此外,数组也提供了`length`属性,用于获取数组元素的数量。 #### 十、方法覆盖与重载的区别 - **Overloading**:在同一...