Por que Double.NaN == Double.NaN retorna false?

Eu estava apenas estudando questões da OCPJP e encontrei esse código estranho: public static void main(String a[]) { System.out.println(Double.NaN==Double.NaN); System.out.println(Double.NaN!=Double.NaN); } Quando executei o código, obtive: false true Como está o resultado falsequando...