char型の定数として正しいものを下から選べ。

  A: ’abc’
  B: ’¥¥’
  C: ’¥t’
  D: ’¥u3027’
  E: ”ABC”
  F: ’¥q123’
<<1.Javaの基礎の目次
基本データ型
サイズ 表現できる値の範囲 精度
float 32ビット 約-3.4×1038〜約-1.2×10-38、0、約1.2×10-38〜約3.4×1038 10進数で約7桁
double 64ビット 約-1.8×10308〜約-2.2×10-308、0、約2.2×10-308〜約1.8×10308 10進数で約16桁
問題3(難易度:1)                                        2004年12月11日
解説
 char型の定数は文字定数といい、シングルクォート(アポストロフィ)「’」で囲みひとつの文字を指定します。複数文字の場合、文字列定数といい、ダブルクォート「”」で囲み指定します。Eは文字列定数です。これはString型になるので、×。またAは3文字あるのでコンパイルエラーになりやはり×。文字aを文字定数として指定したければ「’a’」のようにします。これはシンプルな形。

 他にシングルクォートで囲んでエスケープシーケンスを指定することもできます。エスケープシーケンスは読み物Java 第5章 白黒はっきりさせように載せてありますが、ここでも載せておきましょう。

  \b バックスペース
  \t タブ
  \n 改行
  \r 復帰
  \" ダブルクォート
  \' シングルクォート
  \\ 円サイン

 B、Cはここに含まれるので○。

 もうひとつUnicodeエスケープがあります。これは「¥u」に続いてUnicode文字1文字分のコードを指定したものです。Dの’¥u3027’はひらがなの「ひ」になります。

 Fは以上のどれにも含まれないので×。

解答 B C D
次の文の中から間違えているものを選べ。

  A. char型変数には文字しか代入できないので、整数の演算には使用できない。
  B. byte型のサイズは8ビットで、表現できる値の範囲は−2〜2である。
  C. short型、int型、long型のサイズは、処理系によって異なるので、表現可能な最小値、最大値はどれもわからない。
  D. boolean型は整数で、trueは1、falseは0で表す。
  E. int型のサイズは32ビットで、表現できる値の範囲は−231〜231−1である。
問題9(難易度:1)                            2004年12月22日
解説
  小数点の付いた数値データ(読み物Java 第1章の中では実数値データと呼んでいます)をコンピュータでは浮動小数点という形で記憶します。Javaではこれをfloatとdoubleのどちらかで扱います。よってAは正しいです。

 float型とdouble型のサイズと、表現できる値の範囲の表を示します。ここに整数のときにはなかった精度が加わります。範囲も異なりますが、精度も異なるので、Bは間違え。ここで注目してほしいのは、0に限りなく近い数値は、floatでもdoubleでも表現できないということです。また精度の欄にある有効桁数ですがdoubleでも高々16桁である、ということです。やたらと「約」が付いていますが、ビット列で表現されたものを、私たちにわかりやすい10進数で表しているためです。float型の変数に、1.23456787654などと桁数の多い数値を正確に格納させようとしても無理な話、ということです。 
 さらにややこしいことに0.1など10進数ならスパッときれいな数値でも、float型やdouble型に代入したとたん、精度の関係で本当の0.1ではなくなるのです。参考に次の例を挙げておきます。なんと0.1を10回足しても1にならないのです。出力結果は「-1.1102230246251565E-16」になりました。
            double s = 0;
                for (int i = 0; i < 10; i++) {
                        s += 0.1;
                }
                System.out.println(s - 1);                
                  
 標準ライブラリのパッケージjava.lang中のクラスDoubleにはdoubleに関する定数がいくつか定義されています。  
      NEGATIVE_INFINITY  負の無限大
      POSITIVE_INFINITY   正の無限大
      NaN               非数値
 java.langのクラスはパッケージ名なしで使えるので、NaNであればプログラム中ではDouble.NaNのように指定できます。(→読み物Java 第8章
 NaNは0.0/0.0のような非数値を表します。1.5/0.0はゼロ割なので無限大のPOSITIVE_INFINITYです。−1.5/0.0は負の無限大NEGATIVE_INFINITYになります。Cは間違え。float型については、java.lang.Floatで同じ定数が定義されています。

解答 A

参考 読み物Java 第1章 ハロー、Java
次の文の中から正しいものを選べ。

  A. 浮動小数点数の型は、floatとdoubleだけである。
  B. float型とdouble型の違いは、扱える値の範囲のみで、精度(有効桁数)は同じである。
  C. float型の無限大は、Float.NaN、double型の無限大は、Double.NaNとして定義されている。
問題4(難易度:1)                                 2004年12月17日
 char型は整数演算に使用でき、サイズは8ビット、符号なしなので範囲は0以上になります。よってAは間違え。
 byte型は8ビットですが、範囲は−2〜2−1なのでBも間違え。2の肩の数字はサイズ−1になっているので注意しましょう。また正の数のほうが負の数より1少ないところまでしか表現できないのも要注意。
 基本データ型のサイズは一応規定されていて、整数は上の表のとおり。サイズが確定するので、範囲も決まります。よってCは間違え。
 boolean型はtrueかfalseのどちらかしか扱えません。C言語のように、1や0で代用することはできないので気をつけましょう。Dは間違え。
 Eは正しい。

解答 A B C D
問題8(難易度:1)                                 2004年12月21日
<<1.Javaの基礎 目次|次問題>>
Copyright (c) 2004 Nagi Imai All Rights Reserved..
解説
 まず整数を扱う基本データ型についてのサイズと表現できる値の範囲を表に示します。
boolean型の定数として正しいものを下から選べ。

  A: ”true”
  B: Yes
  C: no
  D: true
  E: True
  F: false
  G: 0
  H: 1
参考 読み物Java 第1章 ハロー、Java
サイズ 表現できる値の範囲
char型 16ビット    0〜216−1
byte型 8ビット −2〜2−1
short型 16ビット −215〜215−1
int型 32ビット −231〜231−1
long型 64ビット −263〜263−1
解説
 boolean型の定数は、次の二つしかありません。
     true     false
大文字はだめ!余計なもの付けない!整数では代用できない!よってDとFが正解。

解答 D F
問題7(難易度:1)                                2004年12月20日
参考 読み物Java 第1章 ハロー、Java
問題5(難易度:2)                               2004年12月18日
次の宣言があるとき、下の文で、コンパイルエラーにならないものを選べ。
                        boolean b = true;
                        char c = 'x';


     A: if (b) {
             System.out.println("true");
           }

     B: b = 1;

     C: if (c == 12) {
              System.out.println("true");
           }

     D:  int a = c + 1;

     E:  c = 6;
                        
     F: c = -6;
解説
 boolean型はtrueかfalseどちらかの値しか持つことができず、数値演算はできません。よってAはOKですがBはエラーです。

 char型は1文字分を記憶できますが、それを整数値として演算に使うことができます。よってC、DはOKです。Eはint型の定数を代入していますが、定数に限り拡大変換でなくても大丈夫です。(→2.演算子と制御文 問題10
 ではFはどうでしょう。この規則から行くと大丈夫そうです。ところが問題3でやったように、char型は0以上216−1以下の整数値しか扱えないので、この範囲外の値は定数でも代入できません。よってFはエラーになります。

解答 A C D E
問題6(難易度:1)                                 2004年12月19日
整数の定数として下から正しいものを選び、それがbyte、short、int、longのどの型になるか答えよ。

  A: 123456789012345
  B: 3.2
  C: 0xABCD
  D: 038
  E: 0x33L
  F: 55555L
解説
 整数の定数はint型とlong型のものがあります。byte型、short型の定数はありません。

 int型の定数にはどんなものがあるか見てみましょう。

 まずおなじみの10進数。「12」や「−345」などです。ではAはOKでしょうか。実はint型の表現できる値の範囲(→問題3)を超える値は、定数としてもコンパイルエラーになります。int型はだいたい21億くらいまでしか入りませんので、123兆などという値はいけません。よってAは×。また小数点つきだとdouble型の定数と見なされるので、Bも×。

 次に8進数。「0」から始まるものは8進数と見なされます。例えば「0432」は
       4×8+3×8+2×8=4×64+3×8+2×1=282
で10進数の282のことです。8進数ですからもちろん各桁は0から7の範囲になければならないのですが、Dは8が使われていて、やはりコンパイルエラーになります。

 最後に16進数。「0x」または「0X」から始まるものは16進数と見なされます。例えば「0x12B」は
       1×16+2×16+B×16=1×256+2×16+11×1=299
で10進数の299のことです。16進数ですから10から15までの桁はアルファベットの「a〜f」または「A〜F」で表します。Bは11になります。Cは問題ありません。値は43981になります。時間があれば確かめてください。

 では次はlong型の定数です。int型の定数にアルファベットのエル、「l」または「L」をつけたものになります。よってEやFはlong型の定数になります。もちろんlong型の範囲に値が入らなければコンパイルエラーになります。もうひとつ注意点として、小文字のエル「l」は数字のイチや縦棒とまぎらわしいので、大文字のエル「L」を使用してください。

解答 C int型     E long型      F long型
浮動小数点の定数として下から正しいものを選び、それがfloat、doubleのどちらの型になるか答えよ。

  A: 4.1F
  B: 6e3
  C: .12
  D: 15.
  E: 6e3f
  F: 0.12e1024
解説
 浮動小数点の定数はfloat型とdouble型のものがあります。

 double型の定数にはどんなものがあるか見てみましょう。

 まず小数点つきの指数部なし。「12.5」や「−34.2」です。では15をdouble型の定数にするにはどうすればいいでしょうか。そのまま「15」ではint型の定数になります。そこで小数点をつけて「15.0」とすればOKです。小数点以下が0の場合、その0は省略でき「15.」とできます。よってDはdouble型の定数になります。また整数部が0の0.12などの0も省略でき「.12」とできます。よってCもdouble型の定数。

 次は指数部付きのもの。とても大きい数値あるいは小さい数値、例えば1230000000000.0や−3456000000000000000.0、あるいは0にとても近い数値、例えば0.0000000000000123などは、×10の何乗という形で表すのが普通です。それをそのまま定数で指定できるように、指数部付きの定数があります。アルファベットのイー、「e」または「E」の後ろに何乗の部分を指定します。

 1230000000000.0 = 123×1010 → 123e10
 −3456000000000000000.0 = −3456×1015 → −3456e15
 0.0000000000000123 = 123×10−16 → 123e−16

 ここで例えば123×1010は1.23×1012でもあります。つまり123e10は1.23e12と同じ数値を表します。Bは6×10=6000をdouble型の定数で表したものになります。「6000.0」と同じです。ではFは0.12×101024でOkでしょうか。いいえ、これはdouble型で表すことのできる範囲を超えているので、コンパイルエラーになります(→問題4

 次はfloat型の定数です。double型の定数にアルファベットのエフ、「f」または「F」をつけたものになります。よってAやEはfloat型の定数になります。もちろんfloat型の範囲に値が入らなければコンパイルエラーになります。

解答 A float型    B double型    C double型    D double型    E float型