Javaマスターへの道 資格勉強編 Part11

今日はシルバーの勉強です。
 以下のプログラムを実行するとどうなるでしょうか
1 2 3 4 5 6 7 8 9 10 11  | public class Main {     public static void main(String[] args) {         int a = 5;         bool flag = true;         if (flag == true) {             do {                 System.out.println(a);             } while (a > 10);         }     } }  | 
選択肢は3つです、この中の一つを選んでください。
A 5が一回だけ出力される
 B 何も出力されない
 C コンパイルエラーになる
それでは解説及び答え合わせです。
 まずflagの値はtrueですのでif文の条件は通りそうですね、なのでdo文が一回は実行されて
 その後whileの条件で弾かれてプログラム終了という流れになりそうですが・・・答えは違います。
 答えはCの「コンパイルエラー」です。もう一度プログラムをしっかり見てみると少しおかしなところがありますね
 flagの前のところを見るとboolと書いてありますが、Javaにboolという基本型はありません。
 一見使えそうなのでスルーしてしまいそうですがboolean型が正しいです。
 引っ掛け問題は多く出題されてるので最初から最後まで一言一句目を通しましょう。
次のプログラムの結果はどうなるでしょうか。
1 2 3 4 5 6  | public class Main {     public static void main(String[] args) {         String str = "abcde";         System.out.println(str.charAt(str.length()));     } }  | 
選択肢は3つです。
 A コンパイルエラー
 B 実行時に例外がスローされる
 C eが出力される
 以下答えです
文字列strは”abcde”の5文字なので長さは5、つまりは文字列の5番目のeが出力される
 といいたいのですが、配列は気を付けることが一つあります。
 それは数え方が1から数えるのではなく0から数え始める点です。
 最初はこの感覚があまりないので、間違いやすいので気を付けましょう。
 では0から数えると配列の5番目に文字はないのでエラーになりますが、これは文法が間違っているわけではないので
 実行時に例外がスローされますので、答えはBとなります。
 今日はここまでとなります最後まで見て頂きありがとうございました。

