[英]Fastest and most efficient conversion of a byte array to a 29 bit integer in 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.