首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

太及啦,是明天面试必问的有关问题.大家快来帮帮小弟我,万分感谢.

2012-02-27 
太及啦,,,是明天面试必问的问题.大家快来帮帮我,万分感谢......publicclassTest{publicstaticvoidmain(Str

太及啦,,,是明天面试必问的问题.大家快来帮帮我,万分感谢......
public   class   Test   {  
public   static   void   main(String[]   args)   {  
int   x   =   0;  
assert   (x   >   0):   "assertion   failed ";   编译时说:赋值的左边必须是变量.
System.out.println( "finished ");  
}  
}  
这个程序在编译的时候为什么说出现这个错误.
在告诉我一下断言是怎么用.谢谢.

[解决办法]
public class Test {
public static void main(String[] args) {
int x = 0;
assert (x > 0): "assertion failed ";
System.out.println( "finished ");
}
}

错的太离谱了。。。这个类是test case么?
[解决办法]
public class Test {
public static void main(String[] args) {
int x = 0;
assert (x > 0): "assertion failed "; // 编译时说:赋值的左边必须是变量.
System.out.println( "finished ");
}
}
把中文注释掉就可以了。


[解决办法]
assert (x > 0): "assertion failed "应该写成:
assert (x > 0) ? " "assertion successed " " : "assertion failed ";
[解决办法]
学习
[解决办法]
学习
[解决办法]
assert是没啥用的东西,用if{}else{}更好.
[解决办法]
对不起,没用过,用的工具追踪比断言强上百倍。
[解决办法]
学习~~
[解决办法]
a = (x> 0)? a:b;
[解决办法]
不是很懂。。
[解决办法]
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的:

  assert(a > 0); // throws an Assertionerror if a <= 0

断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在
公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。


[解决办法]
Assert的用法:

Assert是JDK1.4 所新增的功能。最简单的情形下,在JAVA代码中任一行可以写入一条布尔表达式, 在这一行代码的最前面加上assert关键字,就可以实现这样的功能: 如果表达式为真,则代码继续执行;否则,抛出异常,中止程序,不再往下执行。



它的语法如下:

assert expression1;
assert expression1 : expression2;



expression1是一条被判断的布尔表达式,必须保证在程序执行过程中它的值一定是真;expression2是可选的,用于在expression1为假时,传递给抛出的异常AssertionError的构造器,因此expression2的类型必须是合法的AssertionError构造器的参数类型。简单地说,expression2是当expression1为假时,所拋出的一条自定义的异常信息。

以下是几条断定语句的例子:
assert 0 < value;
assert ref != null;
assert count == (oldCount + 1);
assert ref.m1(parm);



应用例子如下所示:

public class AssertTest {



public void aMethod( int value ) {

String _sTest = "条件不满足!拋异常 ";

assert value > = 0:_sTest;

System.out.println( "OK " );

}

public static void main( String[] args ){

AssertTest test = new AssertTest();

System.out.print( "AssertTest.aMethod( 1 ): " );

test.aMethod(1);

System.out.println( "AssertTest.aMethod( -1 ): ");

test.aMethod(-1);

}

}
assert关键字后面的表达式一定要是boolean类型,否则编译时就会出错。

JDK1.4 中,通过java命令的命令行选项 -ea (-enableassertions 的缩写)来启用。

同样,通过 -da (-disableassertions 的缩写)来关闭assertion功能。



在使用的过程中,曾经碰到过用了assert之后,不管条件为真或是为假,程序都正常执行。

解决方式如下:在idea中run程序时,在run的VM parameters选项中加入命令行 -ea 就可以正常工作,达到我们想要的效果了。

[解决办法]
学习!
[解决办法]
学习!

[解决办法]
jdk1.6 我按lz的方法试过 可以啊 ^_^

热点排行