Java @ mock

byte

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

byte

Javaにおいてbyteはプリミティブ型の1つです。
byteはメモリ領域を8ビット確保します。
byteは符号付き整数を扱うので、2の7乗(128)より、値の範囲は-128~127となります。


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 値範囲を超えた場合 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の値は循環するそうです。
循環するので上記計算は
127-(-128)
  ↓
127+128
  ↓  128はbyte型の範囲を超えているので超えた分が循環し-128になる
127-128
  ↓
  -1
となることがわかります


ウィキ募集バナー