0
之間的區別是什麼Thread.sleep(9000l);
和Thread.sleep(9000);
是什麼了Thread.Sleep(9000升)和Thread.sleep代碼(9000)
之間的差異在線程的睡眠時間區別呢,或者它是一個相同的。
之間的區別是什麼Thread.sleep(9000l);
和Thread.sleep(9000);
是什麼了Thread.Sleep(9000升)和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
相同的字節碼,所以沒有區別。
這是一樣的。 9000L只是java中的一個慣例,用於定義您使用的數字的類型是long。例如float(0.1f) – vegaasen
也沒有區別。 Thread.sleep只有一個重載:'Thread.sleep(long)'。第二種形式指定了一個'int'參數,但它會自動擴展爲'long'。 –
請注意,使用'L'後綴而不是'l'來指定長文字可能會更好:在某些字體中'l'看起來很像'1'。 –