1)public class Test{
public static void main(String []args){
int x=0;
assert(x>0):"assertion failed";
System.out.println("finished");
}
}为什么答案是输出 finished ????
2)
public class Test{
public static void main(String []args){
int x=0;
assert(x>0):"assertion failed":"assertion passed";
System.out.println("Finished");
}
}答案为什么是Compilation fails. ?????
public static void main(String []args){
int x=0;
assert(x>0):"assertion failed";
System.out.println("finished");
}
}为什么答案是输出 finished ????
2)
public class Test{
public static void main(String []args){
int x=0;
assert(x>0):"assertion failed":"assertion passed";
System.out.println("Finished");
}
}答案为什么是Compilation fails. ?????
在Java中,从J2SE1.4开始引入此关键字 assert expression1;
assert expression1: expression2;
在运行时,如果关闭了assertion功能,这些语句将不起任何作用。如果打开了assertion功能,那么expression1的值将被计算,如果它的值为false,该语句强抛出一个AssertionError对象。如果assertion语句包括expression2参数,程序将计算出expression2的结果,然后将这个结果作为AssertionError的构造函数的参数,来创建AssertionError对象,并抛出该对象;如果expression1值为true,expression2将不被计算。 一种特殊情况是,如果在计算表达式时,表达式本身抛出Exception,那么assert将停止运行,而抛出这个Exception。
public class Test{
public static void main(String []args){
int x=0;
assert(x>0):"assertion failed":"assertion passed";
System.out.println("Finished");
}
}
中assert(x>0):"assertion failed":"assertion passed";和
assert expression1;
assert expression1: expression2;
都对不上,所以出错
public static void main(String []args){
int x=0;
assert(x>0):"assertion failed";
System.out.println("finished");
}
}明明x不大于0 应该抛出断言异常,但最后怎么会输出finished。请大家帮忙看看。
or java -ea Test
用这个试试