mcommit's message

大阪でソフトウェア開発の仕事をしている simotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

SJC-Pの問題について

失業していた間(2009年4月〜2009年5月末)に勉強して Sun Java Certified Programmer(1.5)/SJC-P(310-055)の資格を取りました。

この資格はベンダー資格ですが、試験時期を自分で決めることができるので、
自分のペースで勉強でき、好きなタイミングで試験に臨めるのが魅力です。
ところが、一方でこの資格の試験の問題がかなりひねくれています。
実務では絶対に書かないようなコードが次々に問題として出題されます。

実際の試験の出題された問題で私自身が引っかかったり、理解不足で焦った
問題をこの場で紹介してみたいと思います。
※PG経験の長い方々は「なんだこんなことも知らないのか」と思われるような問題かもしれません。

では早速問題です!

【問題】
以下のようなコードがあります。


public class Ex1
{
static final int NUMBER = 5;

public static int func(int param)
{
return param;
}

public static void main(String args[])
{
int i = 0;
int j = 0;
int sum = 0;

i = func(++i);
j = func(j++);
sum += NUMBER + ++i;
sum += j++;

System.out.println("i = " + i);
System.out.println("j = " + j);
System.out.println("sum = " + sum);

}
}


このコードを実行した時の結果として正しいものはどれでしょうか。

1. コンパイルエラーになる。
2. コンパイルはできるが実行時エラーになる。
3.i = 2 j = 1 sum = 7
4.i = 3 j = 2 sum = 6
5.i = 4 j = 2 sum = 8


この問題を見たときは正直焦りました。
答えはここでは解説しませんが、メソッドの引数でインクリメント計算をしたりすることは普段ないでしょうし、

    1. i と i++ の違いをきちんと理解できていないと正解できない問題だと思います。

言語の理解度を試すには確かにいいかも知れませんが、
私はひねくれてるなぁ〜と思う問題でした。