本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。
連載第4回の今回は、Java SE 5.0で新たに導入された拡張for文に関する出題です。
Java言語では、for文の拡張版として拡張for文が用意されています。これは、配列やコレクションの全要素を順番に取り出して処理する場合に使用され、for文に比べて記述が簡素化されています。
拡張for文は、参照変数名で指定した配列やコレクションの要素数分だけ処理が繰り返されます。for文の()内で指定した参照変数から順に要素を取り出し、変数宣言で宣言した変数へ値を代入します。その値を基に、処理文が実行されます。このため、変数宣言で宣言する変数のデータ型は配列の要素の型に合わせる必要があります。また、拡張for文では、各要素に対してインデックスを使用したアクセスは行いません。
1. class Sample { 2. public static void main(String[] args) { 3. // 配列の宣言 4. int[] ary = { 10, 20, 30, 40, 50 }; 5. // 配列aryの全要素を順番に取り出し、出力する 6. for (int num : ary) { 7. System.out.print(num + " "); 8. } 9. } 10. }
C:\sample>java Sample 10 20 30 40 50 C:\sample>
以下の問題を考えてみてください。解答と解説は次のページにあります。
問題
次のソースコードがあります。
class Test { public static void method(String... str) { [ (1) ] } public static void main(String[] args) { String[] str = {"tanaka", "yamamoto", "suzuki"}; method(str); } }
上記のプログラムを正しくコンパイルするために、空欄(1)に入るソースコードはどれですか?2つ選択してください。
A.for (String s : str) System.out.println(s);
B.for (String s ; str) System.out.println(s);
C.for (int i = 0; i < str.length; i++) System.out.println(str[i]);
D.foreach(str) System.out.println(str);
E. while(str.hasNext()) System.out.println(str.next());
Copyright © ITmedia, Inc. All Rights Reserved.