Java “中的交换条件”;如果;陈述
考虑一下这个代码片段Java “中的交换条件”;如果;陈述,java,if-statement,null,Java,If Statement,Null,考虑一下这个代码片段 import java.util.Date; class Test { public static void main(String[] args) { Date date = null; long startTime = System.currentTimeMillis(); if(date == null) { System.out.println("null == date"); }else {
import java.util.Date;
class Test {
public static void main(String[] args) {
Date date = null;
long startTime = System.currentTimeMillis();
if(date == null) {
System.out.println("null == date");
}else {
System.out.println("date found "+date);
}
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
System.out.println(elapsedTime);
}
}
在if条件中,我使用了date==null我想知道,如果我选择写null==date
PS-对于这两种情况,我的代码都将输出为0,但如果代码复杂且操作繁重,该怎么办
date==null
和null==date
几乎完全相同
在您的具体情况下,它们之间既没有速度上的差异,也没有观察到的行为上的差异
您得到了0
,因为现代计算机速度非常快,执行该计算只需不到毫秒
PS:如果你真的想测量它需要多长时间,你必须执行数十万次,然后除以测量的时间来计算执行次数
PPS:微基准测试在Java中并不是那么容易,因为您已经考虑了很多事情,比如JVM内部行为、编译器优化、GC、JIT以及其他
编辑
我错了,它们是完全等效的,因为这段代码将被编译为使用
IFNONNULL
指令。我认为这不会有任何区别,这不会有任何区别。@aKilleR这个问题是专门问性能的。它在性能方面也不会有任何区别。直到引入多种条件。这样就可以短路。但我猜这不属于这个问题