日期:2014-05-20  浏览次数:20732 次

太及啦,,,是明天面试必问的问题.大家快来帮帮我,万分感谢......
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 {