Nit: These aren't "optimizations", they're syntactic sugar.
It is damned handy though.
Java, as far as I know, does not allow if (someObject) where someObject is a class type. AFIAK, java only allows that if someObject is a bool, or possibly an int as well.
In strongly typed languages in general, null is not the same thing as false and not-null is not the same thing as true.