Java @ mock
byte
最終更新:
Bot(ページ名リンク)
-
view
byte
byte 使用例 1
ByteSample1.java
class ByteSample1 { public static void main([[String]][] args) { byte byteMax = 127; byte byteMin = -128; System.out.println("byteMax:" + byteMax); System.out.println("byteMin:" + byteMin); } }
実行結果
C:\java>javac ByteSample1.java C:\java>java ByteSample1 byteMax:127 byteMin:-128
byte 値範囲を超えた場合 1
ByteSample2.java
class ByteSample2 { public static void main(String[] args) { byte byteMax = 128; byte byteMin = -129; System.out.println("byteMax:" + byteMax); System.out.println("byteMin:" + byteMin); } }
コンパイル結果
C:\java>javac ByteSample2.java ByteSample2.java:5: 精度が落ちている可能性 検出値 : [[int]] 期待値 : byte byte byteMax = 128; ^ ByteSample2.java:6: 精度が落ちている可能性 検出値 : int 期待値 : byte byte byteMin = -129; エラー 2 個
以上のようにコンパイルエラーが起こります。
byte 値範囲を超えた場合 2
ByteSample3.java
class ByteSample3 { public static void main(String[] args) { byte byteMax = 127; byte byteMin = -128; System.out.println("byteMax - byteMin:" + (byteMax - byteMin)); } }
実行結果
C:\java>javac ByteSample3.java C:\java>java ByteSample3 byteMax - byteMin:255
問題なく動きました。数値リテラルがint型なので、自動的に型の拡大変換が行われたのだと思います。
以下のプログラムで明示的にbyteを指定して試してみます。
以下のプログラムで明示的にbyteを指定して試してみます。
byte 値範囲を超えた場合 3
ByteSample4.java
class ByteSample4 { public static void main(String[] args) { byte byteMax = 127; byte byteMin = -128; System.out.println("byteMax - byteMin:" + (byte)(byteMax - byteMin)); } }
実行結果
C:\java>javac ByteSample4.java C:\java>java ByteSample4 byteMax - byteMin:-1
上記プログラムは本来なら127-(-128)で
byteの値範囲を超えてしまいエラーになりそうですが、byteの値は循環するそうです。
循環するので上記計算は
byteの値範囲を超えてしまいエラーになりそうですが、byteの値は循環するそうです。
循環するので上記計算は
127-(-128) ↓ 127+128 ↓ 128はbyte型の範囲を超えているので超えた分が循環し-128になる 127-128 ↓ -1
となることがわかります