Consider the following code:
java.util.Map map = new java.util.HashMap();
...
String key = \"A\";
String value = map.
The IF
one is preferable.
Its more readable & self explained.
Additionally: execution time is not a big deal, at least here.
Not sure if you are asking which corresponds to what the compiler will make of the original expression, in which case the answer is:
Neither--
In the example you are calling map.get() twice; the compiler can't know that there are no side effects, so it will call it twice when a value is found.
Probably closest to
String tmp = map.get(key);
String value;
if (tmp == null)
value= "DEFAULT_VALUE";
else
value = map.get(key);
Or if you are asking which alternative is most efficient, in which case the answer is:
The second alternative is probably slightly better because it does not require an additional local variable. An additional local variable imposes a slight overhead on the JVM, but it will probably amount to nothing at runtime once the JIT gets through with it.
Your second option which is :
String value = map.get(key);
if(value == null) {
value = "DEFAULT_VALUE";
}
is better from first one reason:
You dont create an extra reference "tmp"
You dont execute else which you do as part of your ternary comparison.