Tbpgr Blog

Recruiting Operations tbpgr(てぃーびー) のブログ

書籍 パーフェクトJava | 整数

パンくず

書籍 パーフェクトJava
整数

概要

Javaの整数について

Javaの整数型

整数 from to バイト数
byte -128 127 1
char 0 63353 2
short -32768 32767 2
int -2147483648 2147483647 4
long -9223372036854775808 9223372036854775807 8

コード上での確認

public class Perfect3_1_1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		outputMinMax(Byte.class,Byte.MIN_VALUE ,Byte.MAX_VALUE);
		outputMinMax(Character.class,Integer.valueOf(Character.MIN_VALUE) ,Integer.valueOf(Character.MAX_VALUE));
		outputMinMax(Short.class,Short.MIN_VALUE ,Short.MAX_VALUE);
		outputMinMax(Integer.class,Integer.MIN_VALUE ,Integer.MAX_VALUE);
		outputMinMax(Long.class,Long.MIN_VALUE ,Long.MAX_VALUE);
	}

	private static void outputMinMax(Class<?> clazz, Object min, Object max) {
		System.out.println(clazz.getName() + ":" + min + "〜" + max);
	}

}

出力

java.lang.Byte:-128127
java.lang.Character:065535
java.lang.Short:-3276832767
java.lang.Integer:-21474836482147483647
java.lang.Long:-92233720368547758089223372036854775807

使い分け

・byte、charはただの数値として扱うのではなく
バイト・文字として意味をみつ必要が有る際に使用する。

・shortは16bitでデータを保持することに意味をもたせたい場合のみ利用する。。

・その他の場合、基本はint。intでは収まらない数量の場合にlongを利用する。

桁あふれ

各整数型の最大値に1を足すと桁あふれをします。

サンプルコード

package perfect.number;

public class Perfect3_1_1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		byte i = Byte.MAX_VALUE;
		byte j = Byte.MIN_VALUE;
		System.out.println("i------------------------------");
		System.out.println(i);
		System.out.println(Integer.toBinaryString(i));
		i ++;
		System.out.println(i);
		System.out.println(Integer.toBinaryString(i));

		System.out.println("j------------------------------");
		System.out.println(j);
		System.out.println(Integer.toBinaryString(j));
		j--;
		System.out.println(j);
		System.out.println(Integer.toBinaryString(j));
	}
}

出力

なぜ最大値が桁あふれするとマイナスになるのかは
ニの補数を知っているひとがBinaryを見れば明らか。

i------------------------------
127
1111111
-128
11111111111111111111111110000000
j------------------------------
-128
11111111111111111111111110000000
127
1111111