IT転職・プログラミングスクール

正しい整数リテラルは?【Java Silver例題】

Java Silver 例題
管理人(じろー)
こんにちは。当ブログ管理者のじろーです。
独立系SIerでSEをしながら、ブログ運営をしています。

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。

今回は、多くの人が間違いやすい整数リテラルに関する問題を解くコツを紹介します。

 

問題:正しい整数リテラルについて

早速ですが、次の問題を解いてみください。

いかがでしょうか。

意外と盲点になりがちな問題であり、知っていないと解けない問題です。

 

答えは、BとDです。

 

解説と解くコツ

この問題は、整数リテラルについて正しい知識があるかを問う問題です。

整数は、任意進数で扱うことができます。

Java Silverでは、2進数、8進数、10進数、16進数の整数について出題されます。

 

10進数

10進数は0~9を使う整数であり、日常的に最も扱われている整数です。

10進数の整数を代入する場合は、そのまま数字を並べるだけでいいのですが、注意点として先頭に0があると8進数として扱われてしまいます。

例)
int a = 123;      //10進数
int b = 0123;  //8進数

 

2進数

2進数は0と1だけを使います。

2進数の整数を代入する場合は、先頭に"0b"を指定する必要があります。

先頭に"0b"を指定したとき、1と0以外の数字を使った場合はコンパイルエラーになります。

例)
int a = 0b101;                //コンパイルOK
int b = 0b100000101;  //コンパイルOK
int c = 0b102;               //コンパイルエラー

 

8進数

8進数は0~7の数字を扱います。

8進数の整数を代入する場合は、先頭に"0"を指定する必要があります。

先頭に"0"を指定したとき、0~7以外の数字を使った場合はコンパイルエラーになります。

例)
int a = 0123;     //コンパイルOK
int b = 07705;  //コンパイルOK
int c = 0209;    //コンパイルエラー

 

16進数

16進数は0~9とa~fの数字とアルファベットを扱います。

a~fは大文字と小文字、どちらで表記しても問題ありません。

16進数の整数を代入する場合は、先頭に"0x"を指定する必要があります。

先頭に"0x"を指定したとき、0~9とa~f以外の数字を使った場合はコンパイルエラーになります

例)
int a = 0x123;          //コンパイルOK
int b = 0xA12D;       //コンパイルOK
int c = 0xaBcDeF;   //コンパイルOK
int d = 0x123h4;     //コンパイルエラー

 

解くポイント

整数リテラルの問題を解くポイントは、各進数の表記を知っておくことです。

ポイント

  • 10進数・・・先頭文字なし
  • 2進数 ・・・先頭に0b
  • 8進数 ・・・先頭に0
  • 16進数・・・先頭に0x

 

問題を振り返ってみましょう。

Aは先頭文字がないので10進数表記であり、使われている数字は0~9なので正しいです。

Bは先頭が"0”なので8進数表記ですが、0~7以外の"8"が使われているためコンパイルエラーとなります。

Cは先頭に"0b"があるので2進数表記です。整数にも1と0だけが使われているので正しいです。

Dは先頭文字がないので10進数表記ですが、0~9以外の文字"A"が使われているのでコンパイルエラーとなります。

EとFは先頭に"0x"があるので16進数表記です。どちらも0~9の数字とa~fの文字が使われているので正しいです。
Fでは大文字と小文字が混在していますが、問題なくコンパイルは成功します。

 

そのため、この問題はコンパイルエラーとなるBとDが正解です。

 

 

-IT転職・プログラミングスクール
-,

Copyright© 人生2段飛ばし , 2020 All Rights Reserved Powered by AFFINGER5.