黑马程序员技术交流社区
标题:
很不明白,什么时候用assert?
[打印本页]
作者:
杨华威
时间:
2012-5-9 21:49
标题:
很不明白,什么时候用assert?
什么时候用assert?使用的时候有没有什么技巧?
作者:
黄坚声
时间:
2012-5-9 21:51
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,assert将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。
package com.huawei.interview;
public class AssertTest {
public static void main(String[] args) {
int i = 0;
for(i=0;i<5;i++)
{
System.out.println(i);
}
//假设程序不小心多了一句--i;
--i;
assert i==5;
}
}
作者:
--☆伟☆--
时间:
2012-5-20 10:53
推荐使用Debug进行断点调试
作者:
韩国军
时间:
2012-5-21 13:30
Assert是从JDK1.4才开始引入的
assertion 断言一般是在调试程序时使用,特别是使用Junit做单元调试时,更是大量使用assert.
assert有两种语法:
1.assert expre1
exp1必须是返回boolean.
例: public class AsertTest{
public static void main(String args[]){
System.out.println("Assert begin!");
assert false;
System.out.println("Assert end!");
}
assert为false时,会执出异常,System.out.println("Assert end!");没有执行.当把assert改为true时,程序顺利执行.
2.第二种语法:
assert exp1:exp2
当exp1为true的时候后面exp2被忽略,如果false的话,后面的表达式的结果会被计算出来并作为AssertionError得构造器参数
例:
public class AssertTest {
public static void main(String[] args) {
System.out.println("Assert begin!");
int i=0;
assert i == 0:"123456";
System.out.println("Assert end!");
}
}
运行后i == 0为true,而"123456"被忽略了.
还有就是,运行含有assert语句的java程序.由JDK默认状态是关闭的,所以必须用以下的语句编译执行.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2