進数リテラル
出力はどれか。
public class Main {
public static void main(String[] args) {
int a = 0b1010;
int b = 010;
int c = 0x1F;
System.out.println(a + " " + b + " " + c);
}
}
- A
10 10 31 - B
10 8 31 - C
1010 010 0x1F - D コンパイルエラーになる
正解と解説を見る
正解: B
- A:
010を10進数の 10 と読んでいます。先頭が 0 の数は8進数です。 - B: 0b1010 は2進数で 10、010 は8進数で 8、0x1F は16進数で 31 です。
- C: 数値として計算されて出力されるので、書いたままの形では表示されません。
- D: 2進数・8進数・16進数のリテラルはどれも正しい書き方です。
ポイント
0bで始まると2進数、0で始まると 8進数、0xで始まると16進数です。010は 8 です。- 桁区切りの
_は数字と数字の間にだけ置けます (1_000は OK、1_000_や_1000は NG)。