不知道您是否要问哪个对应于编译器将对原始表达式进行的处理,在这种情况下,答案是:
都不-
在示例中,您两次调用map.get();编译器无法知道没有副作用,因此在找到值时它将调用两次。
可能最接近
String tmp = map.get(key);String value;if (tmp == null) value= "DEFAULT_VALUE";else value = map.get(key);
或者,如果您要问哪种选择最有效,那么答案是:
第二种选择可能会稍好一些,因为它不需要其他局部变量。附加的局部变量对JVM造成了轻微的开销,但是一旦JIT通过它,它在运行时可能就没有任何意义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)