簡體   English   中英

Java(字節)立即數轉換有效嗎?

[英]Is Java (byte) literal conversion efficient?

好的,從Java 6開始,沒有y字面后綴。 考慮以下代碼:

byte b = some_byte();
switch (b) {
    case (byte) 0x80: ...
    case (byte) 0x81: ...

和這種選擇:

int b = some_byte() & 0xff;
switch (b) {
    case 0x80: ...
    case 0x81: ...

您會使用哪個? 在第一種情況下,是在運行時還是編譯時執行(字節)強制轉換? 謝謝。

您會使用哪個?

可能是后者,只是為了簡單起見-但附有注釋以解釋發生了什么。

在第一種情況下,是在運行時還是編譯時執行(字節)強制轉換?

編譯時間。 無論如何,不​​要忘記case值必須是編譯時常量。

另一個選擇是為這些事情創建常量:私有靜態最終字節FOO =(字節)0x80; 私有靜態最終字節BAR =(字節)0x81;

...

switch (someByte()) {
    case FOO:
    case BAR:
        ...
}

除了其他方面,這使值不那么“神奇”。

或者您甚至可以使用枚舉...

在第二種情況下,

some_byte() & 0xff;

添加2條指令。 其余部分是相同的。 你可以檢查一下

javap -c Test

其中Test是測試類的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM