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);
}
}
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);
}
}
D:\javas>javac AssertTest.javaD:\javas>java AssertTest
f3=NaND:\javas>java -ea AssertTest
f3=4.2
----------------
NaN是一个特殊的非数值型值,任何数和它进行运算都会得到NaN,且任意两个NaN又不相等,故assert为假,f2=NaN;f3=1.5f;最后一运算,f3=NaN
f3=4.2
怎么解释阿。。
f3=NaND:\javas>java -ea AssertTest
f3=4.2jdk 1.5的
try{
assert(f2==f1):f2=2;
f3=1.5f;}catch(AssertionError e){f3++;}
Float.NaN == Float.NaN 的返回值是false!