This has nothing with != vs ! == (which is logically equivalent). It's simple as this:
NaN == NaN -> false
NaN != NaN -> true
It's perfectly logical for NaNs, just think about it
For best clarity, it's better to use Float.isNaN method instead.
Sun's programmers used this probably for not complicating their generator for Buffer classes. For floats/doubles it works and for integers it's harmless.
Also I wouldn't be worried with concrete code used in these classes, as it's most likely replaced with optimized code by HotSpot in many places.