- 浏览: 76984 次
文章分类
最新评论
-
易学生:
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 1440类型名称 显示长度 数据库类型 JAVA类型 J ... -
mysql索引详解(转)
2017-04-06 14:58 478什么是索引 转自:htt ... -
MySQL性能优化的最佳20+条经验
2017-04-04 10:12 527转自:http://blog.csdn.net/hal ... -
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和联系
2017-03-28 13:53 744转自:http://swiftlet. ... -
SSH2整合--配置+详解
2017-03-24 16:41 0转自:http://blog.csdn.net ... -
Spring注解@Component、@Repository、@Service、@Controlle
2012-07-20 14:42 901转载:http://hi.baidu.com/javahot1 ... -
Spring3 MVC (一)----注解基本配置及@Controller和@RequestMapp
2012-07-18 14:30 903转自:http://ttaale.javaeye.com/bl ... -
Spring3 MVC (二)----注解基本配置及@Controller和@RequestMapp
2012-07-18 14:30 935转自:http://ttaale.javaeye.com/bl ... -
Spring3 MVC (三)----注解基本配置及@Controller和@RequestMapp
2012-07-18 14:30 1518Spring3 MVC (三)----注解基本配置及@Cont ... -
Spring整合struts(一)
2012-07-18 14:31 736转自:http://xm-king.javaeye.com/b ... -
Spring整合struts(二)
2012-07-18 14:31 788转自:http://xm-king.javaeye.com/b ... -
java的定时器使用方法
2012-07-19 09:44 1882定时器类Timer在java.util包中。使用时,先实例化, ... -
浅谈Socket编程及Java实现
2012-07-20 14:42 734浅谈Socket编程及Java实现 ... -
Collection,List,Set和Map等集合类的用法
2012-07-20 14:41 1075线性表,链表,哈希表 ... -
使用Apache-commons-email发送邮件
2012-07-17 16:31 1510引用 使用Apache-commons-email发送邮件 ... -
java基础:java日期加减法
2012-07-17 16:27 3442转自:http://article.pchome.net/co ... -
【转】两个List合并的问题
2012-07-17 16:18 1348import java.util.ArrayList; im ... -
定时器的实现、java定时器介绍与Spring中定时器的配置 1定时器的作用
2012-07-17 15:35 9041定时器的作用 转自:http://blog.csdn.net ...
相关推荐
适用于Java大部分非空判断,有效的减少空指针问题,直接调用Assert 里面的方法就行,非常方便,你值得拥有
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言...
要在Eclipse中使用断言,需要在VM arguments中添加-ea参数。例如:在Run配置中添加-VM arguments:-ea,这样就可以开启断言。 断言的使用方法 断言可以有多种使用方法,下面是两种常见的使用方法: 1. 简单断言 ...
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版本引入的功能,其设计目的是为了帮助开发者...
4. **throws** 关键字:在方法签名中使用,表示该方法可能会抛出一个或多个异常。例如,`TryCatchTest.run`方法声明抛出`IOException`,这意味着调用此方法的代码必须处理这个异常,或者再次将它抛出。 5. **...
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中使用,就必须开虚拟机选项
这个概念在【标题】"Java中断言使用案例"中被强调,而【描述】进一步指出文档会探讨使用断言的优势及其用法。下面将详细阐述Java中断言的原理、好处以及如何使用。 1. **什么是Java断言**: Java断言是一种机制,...
这篇教程将详细介绍如何在Android应用中使用Webview加载assert目录下的HTML文件,并且使用户能够通过Webview拨打电话。 首先,我们需要了解`WebView`。`WebView`是Android SDK提供的一种控件,用于在应用程序内嵌入...
Java常用词汇中英文对照 本文档提供了Java常用词汇的中英文对照,涵盖了许多术语的中英文对照,旨在帮助开发者更好地理解Java编程语言。... assert是Java中的一种断言机制,用于检查代码正确性。 ...
你可以通过在启动参数中使用`-da`或`-disableassertions`来禁用断言。 通过以上步骤,你已经在Eclipse中成功启用了断言功能,现在可以在调试过程中利用断言帮助检测和定位问题。断言是一种非常有用的调试手段,它...
通过调用UnzipUtils下面的UnzipUtils.createFile(locationZip);UnzipUtils.copyBigDataToSD(MainActivity.this, locationZip, ZIP_NAME);UnzipUtils.upZipFile(new File(locationZip)...
使用`ToolProvider.getSystemJavaCompiler()`方法可以获取到当前JVM中的Java编译器实例。 2. **构建诊断监听器**: 编译过程中可能产生错误或警告,我们需要一个`DiagnosticListener`来接收这些信息。你可以实现`...
`import`用于导入类或包,以便在当前文件中使用。 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); } } ``` ##### ...
《单元测试之道Java版-使用JUnit》是一本深入讲解如何在Java开发中运用JUnit进行单元测试的专业指南。单元测试是软件开发过程中的重要环节,它能够确保代码的正确性、可维护性和稳定性。JUnit作为Java领域最流行的...
通过使用 Java Redis 客户端,我们可以在 Java 应用程序中使用 Redis 的功能。在这个资源中,我们将使用 Jedis 作为 Java Redis 客户端。 环境需求 在使用 Java 连接 Redis 集群之前,我们需要确保以下环境已经...
在Java编程环境中,许可证(Licence)控制是一个重要的实践,特别是在商业软件开发中,用于确保软件的合法使用和防止非法复制。本示例将聚焦于如何在Java中实现许可证管理功能,通过`KeyGenerater`类和JUnit测试来...
Arrange/Act/Assert 模式在 Java 单元测试中至关重要。这种测试方法通过将单元测试明确地分为三个不同的部分:设置(Arrange)、执行(Act)和验证(Assert),来结构化单元测试。 四、Arrange/Act/Assert 模式的...