Thread.sleep(9000l);
和Thread.sleep(9000);
有什么区别
它与线程的睡眠时间不同还是相同。
最佳答案
完全没有区别。Thread.sleep
只有一个重载:Thread.sleep(long)
。第二种形式指定一个int
参数,但是它将自动扩展为long
。
由于9000
是一个常量表达式,因此编译器将其重写为9000L
:
public void one() throws InterruptedException {
Thread.sleep(9000);
}
public void two() throws InterruptedException {
Thread.sleep(9000L);
}
反编译为...
public void one() throws java.lang.InterruptedException;
Code:
0: ldc2_w #2 // long 9000l
3: invokestatic #4 // Method java/lang/Thread.sleep:(J)V
6: return
public void two() throws java.lang.InterruptedException;
Code:
0: ldc2_w #2 // long 9000l
3: invokestatic #4 // Method java/lang/Thread.sleep:(J)V
6: return
字节码相同,因此没有区别。