class AssertTest{
public static void main(String arg[]){
float f1=Float.NaN;
float f2=f1;
float f3=1.2f;
try{
assert(f2==f1):f2=2; f3=1.5f;
}catch(AssertionError e){
f3++;
}
f3+=f2;
System.out.println("f3="+f3);
}
}
answer:f3=4.2
需要注意的问题:
1. assert exp1:exp2这样的形式,当exp1为true的时候后面exp2被或略,如果false的话,后面的表达式的结果会被计算出来并作为AssertionError得构造器参数。(assert在编译的时候要用 javac -source 1.4 xxx.java,不然编译会出错~~~~ ) try{ assert(f2==f1):f2=2; f3=1.5f; }catch(AssertionError e){ f3++; }
2. Float.NaN,Double.NaN NaN(Not a Number)。没有这样的值,只是一种表示。 Float.NaN == Float.NaN 的返回值是false!
本文探讨了Java中assert语句的使用方法及其特殊行为,特别是在处理浮点数NaN时的情况。通过一个具体示例解释了assert表达式的执行逻辑及异常处理流程,并展示了最终输出结果。

526

被折叠的 条评论
为什么被折叠?



