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
となることがわかります