- 浏览: 277782 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (161)
- 【**计划】 (2)
- 【**Core Java**】 (30)
- 【**JAVA EE】 (6)
- JDBC (3)
- Hibernate专题系列 (0)
- 【**OS】 (14)
- 【**架构设计/设计模式】 (11)
- 【Hadoop】 (3)
- 【**分布式】 (9)
- 模板 (1)
- C (2)
- 常用工具 (1)
- Oracle (2)
- 【Tips】 (3)
- 【数据库】 (2)
- 玩转Ubuntu (0)
- 【计算机网络/网络编程】 (7)
- 【**Search Engine】 (21)
- 【**专题**】 (6)
- 【**Python】 (10)
- XML (1)
- 【**Open Source Framework】 (1)
- 【高级主题】 (1)
- 【存储】 (3)
- 【笔试面试】 (2)
- 【**数据结构与算法设计】 (20)
- 【其他】 (3)
- 【编程练习】 (2)
- 【待完成】 (12)
- 【工作】 (6)
- 【软件研发】 (4)
- 【**多线程多进程编程】 (5)
- 【Web Service】 (1)
- 【表达式解析/JavaCC系列】 (5)
- 【缓存系统:Memcached】 (1)
- 【Java IO/NIO】 (5)
- 【JVM运行机制及内存管理】 (7)
最新评论
-
107x:
...
python list排序 -
yuzhu223:
...
【Python基础】Python的lambda函数与排序 -
Tonyguxu:
分析查询结果的打分小于11.query=1065800715* ...
lucene打分机制的研究 -
Tonyguxu:
query=139320661963.013709 = (MA ...
lucene打分机制的研究 -
Tonyguxu:
query=10658007150.6772446 = (MA ...
lucene打分机制的研究
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
1 不要再 public 的方法里面检查参数是不是为 null 之类的操作
例如 public int get(String s)
{
assert s != null;
}
如果需要检查也最好通过 if s = null 抛出 NullPointerException 来检查
2 不要用 assert 来检查方法操作的返回值来判断方法操作的结果
例如 assert list.removeAll(); 这样看起来好像没有问题 但是想想如果 assert 被 disable 呢,那样他就不会被执行了 所以 removeAll() 操作就没有被执行 可以这样代替
boolean boo = list.removeAl();
assert boo;
发表评论
-
【Java IO】Java的序列化机制
2012-06-12 18:07 1027Java序列化机制采用的序列化算法: 1.所有保存到磁盘 ... -
关于 Java 对象序列化【转载】
2012-06-04 16:45 1395简介: Java 对象序列化(Java Object Seri ... -
JavaCC/JJTree入门
2012-05-03 18:17 1416JavaCC 介绍 JJTree JJTree为了让 ... -
【Java NIO】内存映射文件
2012-04-24 14:16 1348java.nio包包含对下列特性的支持: 1.字符集 ... -
【Core Java】正则表达式
2012-04-05 23:40 01 -
【Core Java】类加载
2012-04-02 21:16 854主要内容包括: 1.类加载 / 类连接 / 类初始化 2. ... -
【****Core Java提纲****】
2012-04-02 18:54 805Java IO NIO Java并发编程 ... -
Java编程中“为了性能”尽量要做到的一些地方[zz]
2012-03-19 23:31 8451. 尽量在合适的场合使用单例 使用单例可以减轻 ... -
【Java并发】线程安全
2012-03-10 15:44 1054什么是线程安全? 当多个线程访问一个类时,如果不用考 ... -
【Java Socket】
2012-03-07 18:49 2712 -
各个rules里代码分析
2012-03-06 10:54 759InternalChannelRule private ... -
WXXR LRUList的实现
2012-03-01 16:01 777LRUList -
Apache LRUMap实现
2012-02-23 13:10 1099源码是 org.apache.commons.collect ... -
WXXR LRUMap的实现
2012-02-22 18:33 1887前言 实现LRU算法,注意观察者模式、并发(读写锁、线程池) ... -
【专题】LRU
2012-02-22 16:21 1529包含如下内容: 一. LRU算法 ht ... -
LRU理论
2012-02-21 18:46 10321.LRU算法介绍 LRU是Least Rec ... -
Eclipse Memory Analyzer使用指南
2012-02-21 18:42 1095参考 http://www.eclipse.org/ma ... -
【Java并发】锁
2012-02-20 14:04 3055简介 ... -
【Java IO】IO介绍
2012-02-14 09:40 738传统IO模型——流模型 Java IO分类 文 ... -
【Java NIO】NIO介绍
2012-02-13 18:13 874概述 新IO使用内存映射文件的方式来处理输入/输出,新IO将 ...
相关推荐
Java的关键字包括但不限于`abstract`、`continue`、`for`、`new`、`switch`、`assert`、`default`、`goto`(未使用)、`package`、`synchronized`、`boolean`、`do`、`if`、`private`、`this`、`break`、`double`、`...
### Core Java 知识点汇总 #### Java 关键字 Java 是一种强大的面向对象编程语言,广泛应用于企业级应用开发、移动应用(尤其是 Android 应用)、Web 开发等领域。理解 Java 的关键字对于掌握该语言至关重要。 - ...
在Java中,JUnit是广泛使用的单元测试框架,而Hamcrest则是一个匹配库,提供了丰富的断言方法,使得测试表达更加清晰。下面我们将深入探讨这两个库以及如何在Java项目中使用它们。 **JUnit4.jar**: JUnit4是JUnit...
JUnit是Java领域广泛使用的单元测试框架,其默认集成了hamcrest-core,使得开发者能够方便地使用hamcrest的匹配器进行断言。在JUnit测试中,hamcrest的API可以替代传统的assert语句,如`assertThat()`方法,使得测试...
这个jar包的引入是使用hamcrest框架的基础,无论是使用Eclipse、IDEA或其他Java开发工具,都需要包含这个库才能充分发挥hamcrest的功能。 hamcrest框架的核心理念是提供一种声明式的匹配器(Matcher)模式,使得...
本文将深入探讨Hamcrest包在Java单元测试中的作用和使用方法。 首先,我们来看两个核心的Hamcrest库文件:`hamcrest-core-1.3.jar`和`hamcrest-library-1.3.jar`。`hamcrest-core`是基础库,提供了基本的匹配器和...
JUnit 4.12 和 Hamcrest Core 1.3 是两个在Java开发中广泛使用的单元测试框架的重要组件。本文将详细介绍这两个库的功能、用途以及如何在Eclipse集成开发环境中使用它们进行单元测试。 JUnit是Java编程语言的一个...
coreJava部分 8 1、面向对象的特征有哪些方面? 8 2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否...
`native`表示方法由非Java代码实现,`assert`用于断言,`transient`和`volatile`则与序列化和内存可见性相关。 Java的注释有三种形式:单行注释`//`,多行注释`/* ... */`,以及Javadoc注释`/** ... */`,它们用于...
**Java-Selenium: PeopleNTech的Selenium和Core Java项目** 该项目主要涵盖了使用Java和Selenium进行自动化测试的实践。Selenium是一个强大的开源自动化测试工具,广泛用于Web应用程序的跨浏览器测试。它允许开发者...
本教程将介绍如何使用Java将JSON数据转换为HTML格式,以及相关的测试方法。 一、Jackson库的使用 Jackson是Java最常用的JSON处理库之一,它提供了解析JSON、生成JSON以及将Java对象映射到JSON的功能。要将JSON转换...
assert (关键字) 断言 [ә'sә:t] ' (java 1.4 之后成为关键字) associate n.关联(同伴,伙伴) [ә'sәuʃieit] attribute n.属性(品质,特征) [ә'tribju:t] boolean (关键字) 逻辑的, 布尔型 call n.v.调用; 呼叫...
在`src/test/java`目录下创建一个测试类,例如`ApiTest.java`,编写测试方法: ```java import org.testng.Assert; import org.testng.annotations.Test; import okhttp3.OkHttpClient; import okhttp3.Request; ...
本文将深入探讨`groboutils-core-5`的主要特性和使用方法,以及其如何支持多线程测试。 首先,`groboutils-core-5`的核心在于其对Java单元测试的全面支持。单元测试是验证软件最小可独立运行单元的过程,如方法或类...
- **interface**:所有的方法默认都是抽象的,从 Java 8 开始支持默认方法和静态方法;并且接口只能包含静态常量。 #### 19. abstract method 是否可以同时是 static, native, synchronized? - 抽象方法不可以...
《Junit 4.12 和 Hamcrest Core 1.3:Java单元测试的重要伙伴》 在Java开发中,单元测试是确保代码质量的关键环节,它可以帮助开发者在早期发现并修复错误,避免了后期集成阶段可能出现的问题。在这里,我们要探讨...
本文将深入探讨hamcrest-core-1.3.jar这个核心库以及其源码文件hamcrest-core-1.3-sources.jar,帮助读者更好地理解和使用Hamcrest。 1. **Hamcrest简介** Hamcrest是Java中用于断言和匹配的库,它的主要设计理念...
本文将深入探讨这两个库的使用方法、核心功能以及它们在实际开发中的价值。 首先,我们来看Junit。Junit是Java编程语言中最流行的单元测试框架之一,由Erich Gamma和Kent Beck共同创建。Junit 4.11版本引入了许多...
下面是一段使用PowerMock模拟静态方法和私有方法的示例代码: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org....
JUnit是一个流行的Java单元测试框架,而hamcrest-core则是JUnit中常用来进行断言的库,它提供了丰富的匹配器(Matchers),使得测试表达更加清晰和强大。本篇文章将深入探讨如何利用JUnit4.11和hamcrest-core-1.3...