Javaプログラマー資格試験(OCJ-P) WEB講座 -11ページ目

Javaプログラマー資格試験(OCJ-P) WEB講座

Javaプログラマー資格(OCJ-P)を学習するブログです。

OCJ-P・Javaプログラマー資格をとりたい。
Javaプログラミングの入門者・初心者。

そんなあなたに、Javaプログラマー資格の取得に役立つ本質的な知識を、
分かりやすく解説していきます。

 instanceof演算子は型比較演算子と言います。
言語規定では、15.20.2 型比較演算子 instanceof で定義されています。

A instanceof B の場合、1.『オブジェクトAは型Bのインスタンスである』だけでなく、
2.『キャストして代入可能』である場合もtrueとなります。

私は1だけかとしばらく思っていたのですが、
参考書を読むと2も書かれていたので言語規定を読んでみると、
もう少し本質的な説明がなされていました。

曰く、
『Aが null でなく、例外 ClassCastException を投げず
に B にキャストできるならば、trueとする。』

だそうです。

はい、ということで、ClassCastExceptionも詳しく調べないといけませんね。
ClassCastException は、API仕様で調べましょう。

曰く、
『あるオブジェクトを継承関係にないクラスに
キャストしようとしたことを示すためにスローされます。』




 Comparator と Comparableの違い。
分かれば簡単ですが、紛らわしい人には紛らわしい。

ComparatorとComparableはインターフェースです。
Comparatorは任意のクラスのソート順(並び順)を指定します。
Comparableは自分のクラスのソート順を指定します。


class Sample implements Comparator{} は、
処理の中で何かのクラス(ソートさせたいクラス)のソート順を定義します。
compare()をオーバーライドして定義します。

class Sample implements Comparable{} は、
処理の中で自分のクラス(Sample)のソート順を定義します。
comparaTo()をオーバーライドして定義するんです。
 シグニチャの研究。
もとい、シグネチャの研究。

メソッドのシグネチャという概念を知っていますか?
そもそもシグネチャは何かを知っていますか?


シグネチャとは、英単語【signature】の日本語訳です。
意味は サイン、署名  などという意味になります。

つまり、ものを識別する記号という事です。
転じて、メソッドのシグネチャとは、
メソッドを識別するものという事になります。

 ちなみに、シグネチャはシグニチャではありません。
シグネチャが標準です。言語規定[8.4.2 メソッドのシグネチャ] でそう使われているからです。

メソッドのシグネチャは3つの要素からなります。
3つの要素とは、メソッド名、引数の型、引数の数の3つになります。

Javaでは一般的にメソッドを定義するとき、以下のように書きます。
public void メソッド名 (引数の型 変数){ 処理 };;

例えば、
public void test(String s){ 処理; };
という具合ですね。

このとき、メソッド名は test
引数の型は String
引数の数は Stringが1つ
ということになります。

引数の型や数はいくつでもOKです。
public void test(String s,int i,int t){};
という要領ですね。

私が気になったのは、
引数の並び順は関係あるのか?ということ。
簡単なサンプルを書いて調べてみました。

public class Main {
  public void test(String s,int i){};
  public void test(int i,String s){};
}

メソッドtestの2つの引数String sとint iの順番を逆にしたメソッドを作りました。
コンパイルしたらエラーにならなかったので、順番が変わればOKみたいです。

コンパイラは、メソッドの順番も区別する。
と考えてよいということですね。

勉強になりました^^