Is there a difference between null != something
and something != null
in Java. And if there is a difference then which one should I use and why??
There is no difference, but some people use it for ease of readability in their code.
There's no difference between null != something
and something != null
. You must be thinking about the person.getName().equals("john")
and the "john".equals(person.getName())
difference: the first one will throw a NullPointerException
if getName()
returns null
, while the second won't. But this is not applicable for the example of your question.
Point of view of performance there will be no difference, both sides of the operator are executed any way. But for a more readable code second one seems more readable
obj.getSomething().getAnotherThing().doSomething() != null
null != obj.getSomething().getAnotherThing().doSomething()
But if you are going to just compare a variable or parameter this is more readable
something != null
Of course this depends on sense of reader.
I just want to point out that the "Yoda condition" rationale for doing this (in languages like C & C++) does not apply in this (Java) case.
Java does not allow general expressions to be used as statements, so both
something == null;
and
null == something;
would be compilation errors.
The types of something == null
and something = null
are different; boolean and some reference type respectively. In this case, it means that both:
if (something = null) {
...
}
and
if (null = something) {
...
}
would be compilation errors.
In fact, I can't think of a realistic example where null == something
would be compilation error and something == null
would not. Hence, it doesn't achieve anything in terms of mistake-proofing.
In java if we compare any, always we have to place variables at left hand side and values are placed at right hand side...
its probably comming from the so-called joda-conditions where you write "bla" == myVariable
instead of myVariable == "bla"
because it could happen to accidentially write myVariable = "bla"
which returns "bla" in some languages but also assign "bla" to myVariable