- 浏览: 74856 次
文章分类
最新评论
-
易学生:
iteye用的 就是这个编辑软件吧。
FCKeditor在线编辑器的使用(jsp:html在线编辑器=FCKeditor 2.2+FCKeditor.java 2.3 ) -
易学生:
引用[*][/size][align=left][/align ...
FCKeditor在线编辑器的使用(jsp:html在线编辑器=FCKeditor 2.2+FCKeditor.java 2.3 ) -
i_lolo:
哈哈哈,笑到流泪了。
DOTA中国 外传 老婆,dota不是这么玩的……
转自:http://jerrygao.iteye.com/blog/77544
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";A
我们刚开始讲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;
发表评论
-
Java数据类型和MySql数据类型对应一览
2017-04-12 16:00 1383类型名称 显示长度 数据库类型 JAVA类型 J ... -
mysql索引详解(转)
2017-04-06 14:58 427什么是索引 转自:htt ... -
MySQL性能优化的最佳20+条经验
2017-04-04 10:12 496转自:http://blog.csdn.net/hal ... -
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和联系
2017-03-28 13:53 708转自:http://swiftlet. ... -
SSH2整合--配置+详解
2017-03-24 16:41 0转自:http://blog.csdn.net ... -
Spring注解@Component、@Repository、@Service、@Controlle
2012-07-20 14:42 868转载:http://hi.baidu.com/javahot1 ... -
Spring3 MVC (一)----注解基本配置及@Controller和@RequestMapp
2012-07-18 14:30 870转自:http://ttaale.javaeye.com/bl ... -
Spring3 MVC (二)----注解基本配置及@Controller和@RequestMapp
2012-07-18 14:30 887转自:http://ttaale.javaeye.com/bl ... -
Spring3 MVC (三)----注解基本配置及@Controller和@RequestMapp
2012-07-18 14:30 1472Spring3 MVC (三)----注解基本配置及@Cont ... -
Spring整合struts(一)
2012-07-18 14:31 700转自:http://xm-king.javaeye.com/b ... -
Spring整合struts(二)
2012-07-18 14:31 751转自:http://xm-king.javaeye.com/b ... -
java的定时器使用方法
2012-07-19 09:44 1848定时器类Timer在java.util包中。使用时,先实例化, ... -
浅谈Socket编程及Java实现
2012-07-20 14:42 692浅谈Socket编程及Java实现 ... -
Collection,List,Set和Map等集合类的用法
2012-07-20 14:41 1049线性表,链表,哈希表 ... -
使用Apache-commons-email发送邮件
2012-07-17 16:31 1439引用 使用Apache-commons-email发送邮件 ... -
java基础:java日期加减法
2012-07-17 16:27 3398转自:http://article.pchome.net/co ... -
【转】两个List合并的问题
2012-07-17 16:18 1296import java.util.ArrayList; im ... -
定时器的实现、java定时器介绍与Spring中定时器的配置 1定时器的作用
2012-07-17 15:35 8451定时器的作用 转自:http://blog.csdn.net ...
相关推荐
适用于Java大部分非空判断,有效的减少空指针问题,直接调用Assert 里面的方法就行,非常方便,你值得拥有
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言...
可以为Java复杂的测试提供简单的方法!可以加快开发进度
正确算法 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中使用,就必须开虚拟机选项
详细介绍了Java陷阱之assert关键字,有需要的朋友可以参考一下
使用springboot框架快速搭建,封装自定义断言做业务校验,公共异常处理打印日志, 更简单的业务判断处理
通过调用UnzipUtils下面的UnzipUtils.createFile(locationZip);UnzipUtils.copyBigDataToSD(MainActivity.this, locationZip, ZIP_NAME);UnzipUtils.upZipFile(new File(locationZip)...
主要介绍了java异常处理机制示例(java抛出异常、捕获、断言),需要的朋友可以参考下
A Java architecture test library, to specify and assert ar.zip
动态编译字符串成java,并且添加class到jvm
Java项目开发常用工具包,其中主要包括:Assert.java BufferedImageLuminanceSource.java CipherUtil.java ClientConst.java CodeUtil.java ComputeUtil.java DataUtils.java DateUtils.java Digests.java Encodes....
goto和const在java中虽然不再使用但是还作为保留字存在 java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两个也是关键字 enum 枚举 assert 断言 一个标识符尽量符合语义信息,...
junit-assert-collector 我编写的Java库是为了补充我在Savvis / CenturyLink最初开发的测试框架而开发的测试框架。 该库实质上扩展了JUnit库的org.junit.rules.ErrorCollector类,并且提供了大多数(如果不是全部)...
必须要时从Java SE API的源代码分析,了解各种语法在Java SE API中如何应用。 《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 ...
本书由世界级编程大师Herbert Schildt撰写,英文原书一经出版,就受到了读者的热烈欢迎。...书中包含了Java 2, 版本1.3中新增的特征,其中最重要的是assert关键字、基于通道的I/O子系统、成链的异常和网络增强功能等。
9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中...
java 常用英语词汇大全 部分内容如下: algorithm n.算法['.lg.riem] annotation [java]代码注释[.n.u'tei..n] anonymous adj....(反义:directly adv....assert (关键字) 断言[.'s.:t] ‘ (java 1.4 之后成为关键字
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
156、在jsp:useBean语法中使用beanName有何好处? 37 157、当我使用时,在浏览器的地址栏没有改变? 37 158、如何转换JSP 0.9版本的文件到JSP1.1? 37 160、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么...