java中true转换为int_在Java中将字节转换为int的最优雅的方式
示例代碼:
int a = 255;
byte b = (byte) a;
int c = b & 0xff; // Here be dragons
System.out.println(a);
System.out.println(b);
System.out.println(c);
所以我們從一個整數值255開始,將它轉換成一個字節(變為-1),然后使用魔術公式將其轉換成一個int。預期輸出為:
255
-1
255
我想知道這個0xff是最優雅的轉換方式。 checkstyle例如抱怨在這個地方使用魔術數字,這不是一個好主意,忽略這個檢查的值,因為在其他地方255可能真的是一個魔術數字,應該避免。而且我自己定義一個這樣的東西是非常煩人的。所以我想知道是否有一個標準的方法在JRE做這個轉換?或者也可能是具有最高無符號字節值的已定義常量(類似于最高有符號值的Byte.MAX_VALUE)
所以要保持問題的簡短:如何將一個字節轉換為int而不使用魔術數字?
好的,到目前為止,提到了以下幾種可能性:
>繼續使用& 0xff并忽略checkstyle中的魔術數字255。缺點:也可以在其他范圍(不是位操作)中使用此號碼的其他地方。優點:簡單易讀。
>定義我自己的常量,然后使用& SomeConsts.MAX_UNSIGNED_BYTE_VALUE。缺點:如果我需要它在不同的類,那么我必須定義我自己的常量類只是為了這個常數。優點:這里沒有魔術數字。
>做一些聰明的數學,如b& ((1< Byte.SIZE)-1)。編譯器輸出最有可能是相同的,因為它被優化為一個常量值。缺點:很多代碼,難以閱讀。優點:只要1沒有被定義為魔術數字(checkstyle默認忽略它),我們在這里沒有魔術數字,我們不需要定義自定義常量。而當字節重新定義為16位的某一天(只是開玩笑),那么它仍然可以工作,因為Byte.SIZE將是16而不是8。
有更多的想法嗎?也許一些其他聰明的比特操作比上面的更短,只使用像0和1這樣的數字?
總結
以上是生活随笔為你收集整理的java中true转换为int_在Java中将字节转换为int的最优雅的方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑屏幕保护(电脑屏幕保护怎么取消)
- 下一篇: java selenium用js点击_S