前回のJava Silver SE 17 資格取得までに関連して、気を付けたほうがいい問題やアドバイスなど簡単に書いて、資格取得を考えている方の参考になれたらと思います。
間違えやすい問題
個人的に引っ掛かった問題の個所をいくつかあげていきます。
boolとboolean
言語によっては真偽値の型名がboolであることがあります。
C#ではそうだったので最初はよく引っ掛かりました。
javaだとboolという型はなく、コンパイルエラーになるので注意。
コンストラクタの呼び出し順
this(),super()の呼び出しはコンストラクタ内の1行目じゃないとコンパイルエラーになります。
また同じコンストラクタ内でthis(),super()両方を使うことはできないので注意。
var変数
varが使えるのはメソッド内のローカル変数のみです。
グローバル変数や引数に使われていないか確認するとよいでしょう。
あと一文字目を大文字にして「Var」というような姑息な問題もありました。
もちろんそんな型はないので間違いとなります。
staticメソッド
staticメソッド内ではstatic以外の変数、メソッドを使用することはできません。
個人的にコードをさらっと読んでいると見落として間違えることがよくあったので、staticメソッド内では関連する変数やメソッドの修飾子をしっかり確認するようにしたほうがいいと思います。
同じ変数名
メソッド内のローカル変数名とインスタンス変数名が同じでもエラーにはならない。
「this.」がついてないときはローカル変数のほうが使われる。
public class Main{
int num = 0;
public static void main(String[] args){
}
public void setNum(int num)
{
num = 10; // ローカル変数(引数)のほうに代入される
this.num = 10; // インスタンス変数のほうに代入される
}
}
アクセス修飾子
public すべてのクラスからアクセスできる
protected 同一パッケージのクラスとサブクラスからアクセスできる
なし 同一パッケージのクラスからアクセスできる
private 現在のクラスからだけアクセスできる
C#を触っていたときは、「なし=private」だったので最初間違えました。
最後に
問題のコードをいちいち全部読んでいたら時間が足りなくなりますので、確実に間違いだとわかる記述をみつけたらその時点で回答してしまうのがよいと思います。
時間に余裕がないと焦って間違えたりしてしまうので時間も意識して試験にのぞみましょう。