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

char型の変数に代入OKなのは?【Java Silver例題】

Java Silver 例題

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

今回は、知っておかないと恥ずかしいchar型変数に代入できる整数や文字についてです。

 

問題:char型変数について

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

いかがでしょうか。

char型は奥が深く、char型といえば1文字だけという認識だけでは解けない問題です。

 

答えは B 、E、 Gです。

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

char型のポイントと解説

この問題では、char型について正しい知識があるかを問う問題です。

まずは、char型の知っておくべき扱い方について解説していきます。

char型について

char型は次のような特徴があります。

char型の特徴

  • 文字列1文字を保持できる
  • 文字列を代入するときはシングルクオーテーションで囲む。'a'
  • 整数を代入するときはシングルクオーテーションは不要。
  • 整数は0~65535を代入できる。
  • nullは許容できない

char型は1文字を保持することができる型とはじめに教えられますが、この”1文字”というのがなかなか厄介な部分であります。

今回の問題を間違えた人の多くは、”文字列1文字だけ代入でき、整数は代入できない”と間違った認識をしている可能性があります。

正しい使い方を順番に説明していきます。

 

char型に文字列を代入する場合は次のようにシングルクオーテーションを用います。

char a = 'a';
char b = '7';

 

ここまでは問題ないと思いますが、次の場合はどうでしょうか。

char c =7;

シングルクオーテーションがないので、コンパイルエラーとなると思う方がいるかもしれませんが、実はコンパイルエラーにはなりません。

なぜなら、char型は整数も代入することができ、整数の代入ならシングルクオーテーションを必要としません。

 

ここでポイントとなるのが整数を代入できるが、整数としては保持していないという点です。

どういうことかというと、文字列の1文字1文字には固有の整数が割り振られておりchar型は固有の整数が示す1文字を保有していることになります。

この固有の整数を文字コードと言います。

文字コードの割り振り方には色々な種類があり、JavaではUnicodeという表記方法が用いられています。

Unicodeではデフォルトだと0~65535の整数を代入することができ、それ以外の範囲ではコンパイルエラーになります。

例えば、'a'はUnicodeだと97が割り振られているため、次の2つはどちらも同じ文字を保持していることになります。

char a ='a';   //出力すると「a」
char b =97;   //出力すると「a」

 

また、整数で代入する場合は任意進数でも同じ文字を保持します。

char b = 97;                  //10進数:出力すると「a」
char c = 0b01100001; //2進数:出力すると「a」
char d = 0x0061;         //16進数:出力すると「a」

 

解くポイント

問題の選択肢を1つずつ見ていきましょう。

 

次のchar型の特徴さえ抑えていれば、今回の問題は簡単に解くことができます。

char型の特徴

  • 文字列1文字を保持できる
  • 文字列を代入するときはシングルクオーテーションで囲む。'a'
  • 整数を代入するときはシングルクオーテーションは不要。
  • 整数は0~65535を代入できる。
  • nullは許容できない

Aはダブルクオーテーションを使っているので、間違いです。

Bは1文字かつシングルクオーテーションを使っているので正しいです。

Cは1文字ですが、文字列にシングルクオーテーションがないので間違いです。

Dは2文字の文字列なので間違いです。

Eは整数なので正しいです。

Fはシングルクオーテーションを使うことで文字列扱いになり、それにより2文字になるので誤りです。

Gは16進数表記の整数なので正しいです。

Hはchar型はnullを許容しないことから間違いです。

 

よって、答えはB、E、Gです。

 

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

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

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