Oracle Certified Professional Java Programmer試験準備

まえがき





今年の12月16日、私はOracle Certified Professional Java Programmer試験を受けるように自分でスケジュールしました。 彼は過去にサン認定プログラマーです。 さらに、この重要なステップにさらに3人の同志を押し込みました。 準備を始めます。 これまでのところ動きは鈍いですが、それでも...そして、得た知識を体系化するために、定期的に「スクイーズ」を作成することにしました。 現在読んでいるのは、スクイーズ番号ゼロです。 これにより、誰かが高価な本を購入したり、膨大な数の記事をめくったりするのを避けることができます。 ちなみに、Kathy SierraとBert Batesが執筆した「 Sun Certified Programmer for Java 6:Study Guide」という本から準備を進めています。 良い本、素晴らしい著者、簡単な言葉。 お勧めです。



試験前に知っておく必要のあるすべてのことを完全に説明するつもりはないことに注意してください。 私はまだ試験自体に合格していないという理由だけで、habrozhitelの助けがなければそのような仕事をすることはできません。 以下の多くは、一部の人にとっては原始的と思われるかもしれません。 ただし、テストのテストの実践が示すように、悪魔は詳細にあります。 これは、識別子の命名規則から、継承中およびそれ以降のメソッドのオーバーロードの落とし穴まで、必要なことを簡潔に述べる試みです。 さらに、すでにこのように行った人々のコメントから何か役に立つものを強調したいと思います。 最良の場合、成功したストーリーがHabréに登場し、それがどのように始まり、成長し、発展したかについての完全な説明が表示されます。 ほぼ2日ごとにすべてがリアルタイムで公開されるという考え方なので、試験に合格しなければならない人は、学習率を日付ごとに比較し、チェックポイントにはるかに早く合格することができます。







シリーズ全体のコンテンツ



  1. クラスとインターフェイスの識別子、命名規則、修飾子
  2. メソッドとフィールド、可変引数、列挙型、配列の修飾子




それでは始めましょう





すべてのJavaコンポーネント(クラス、変数、メソッドなど)が名前を持っている必要があること、またはもう少し科学的に聞こえる識別子が必要であることは秘密ではありません。 識別子には2つのレベルの「正確さ」があることに留意してください。 まず、言語の要件を満たす必要があります。つまり、



  1. 識別子は、文字、通貨記号(たとえば、$)またはアンダースコアで始まる必要があります。 識別子を数字で始めることはできないことに注意してください。
  2. 最初の文字の後、識別子には、文字、通貨記号、接続文字または数字の任意の組み合わせを含めることができます。
  3. コンパイラの観点から見ると、識別子に含まれる文字数に制限はありません。
  4. Javaキーワードを識別子として使用することはできません。
  5. Javaの識別子は大文字と小文字が区別されます。 したがって、fooとFOOは同じものではありません。




次に、識別子はJava Naming Conventionを満たしている必要があります。 識別子が規約の観点から正しくない場合でも、コンパイラーにとって有効なままである可​​能性があることを理解することが重要です。 例えば、コンパイラーは、inしさえすることなく、変数int _ $の宣言を食べます。 exmenの間に、識別子の構文の妥当性を判断する必要があるかどうか、または一般に受け入れられている標準を満たしているかどうかを判断する必要があるかどうかを理解することが重要です。 ところで、誰もあなたに標準全体を尋ねることはありません。 いくつかの事実のみを覚えておくことが重要です。



  1. クラスの大文字の名前を書きます。 残りはキャメルケースです。
  2. メソッドと識別子の名前は小文字で書かれています。 残りはキャメルケースです。
  3. 定数を静的変数および最終変数として宣言します。 名前はすべて大文字で表記され、単語はアンダースコアを使用して区切られます。
  4. プロパティのゲッター名を取得するには、名前の最初の文字を大文字に変更し、単語getを先頭に追加します。
  5. プロパティの名前セッターを取得するには、名前の最初の文字を大文字に変更し、単語セットを先頭に追加するだけです。
  6. プロパティがブール値の場合、getの代わりにisプレフィックスを使用できます。
  7. リスナーの登録に使用するメソッドは、単語addとリスナーのタイプから組み立てる必要があります。 たとえば、addActionListener。
  8. リスナーを削除するために使用されるメソッドは、単語removeおよびリスナーのタイプから組み立てる必要があります。 たとえば、removeActionListener。




実際、ここにあなたが順守しなければならないすべての基本的なルールがあります。 しかし、私は本の著者自身が常にこれらの規則に従っているわけではないことに注意します。 この理由は、彼らが言うように、試験の国際化に使用されるユーティリティの機能です。 認定プログラマー、私見、それを修正できます))



次に、クラスのソースコードでファイルを使用するためのルールについて少し話しましょう。



  1. 重要な事実。 1つのファイルには、public修飾子を持つクラスを1つだけ含めることができます。 デフォルトの識別子を持つクラス。ただし、その中の任意の番号を使用できます。
  2. ファイルにパブリックアクセス修飾子を持つクラスが含まれている場合、このファイルの名前はパブリッククラスの名前と一致する必要があります。
  3. クラスがパッケージの一部である場合、パッケージ宣言はファイルの最初の行でなければなりません。
  4. 他のパッケージのインポートがある場合、パッケージ宣言の直後でクラスの宣言の前に移動します。 パッケージ宣言がない場合は、ファイルの先頭に。
  5. パブリッククラスを含まないファイルは、その中で宣言されたクラスのいずれとも一致しない名前を持つ場合があります。


Javaでは、アクセス修飾子は4つしかありません。 最初の3つは、パブリック、プライベート、および保護されています。 4番目は、修飾子の欠如です。 同時に、クラスとインターフェイスを宣言するために使用できる修飾子は、パブリックまたはデフォルトの2種類のみです。 webkumoのヒントのおかげで、この制限はネストされたクラスには適用されませんが、これは試験の別のトピックです。 それらについて-後で。



  1. クラスの宣言にアクセス修飾子がない場合、デフォルトのスコープが取得されます。 これは、同じパッケージ内でそれと共に配置されているクラスのみがそれを見るということを意味します。 そして他に。
  2. クラスにパブリックアクセス修飾子がある場合、Javaユニバース全体からアクセスおよび表示できます。




さらにいくつかのキーワードを使用して、任意の順序でアクセス修飾子を切り替えることができます:final、abstractまたはstrictfp。 必要に応じて、たとえばpublic final strictfpなどの修飾子を使用してクラスを簡単に宣言できます。 また、順序は重要ではありません。 何かを入れ替えることができます:最終的な公開strictfp。 すべての修飾子は完全に同等です。 ファイナルとアブストラクトを同時に適用するだけではいけません。 意味的に相互に反対の修飾子を使用するため、これによりコンパイラエラーが発生します。



  1. strictfp修飾子は私にとって啓示でした。 率直に言って、あなたはそれを使用する必要はほとんどありません。 しかし、知って覚えておくと便利です。 クラスに適用される場合、浮動小数点数のすべての操作がIEEE 754標準と一致することが保証されます。判明したように、異なるプロセッサが浮動小数点数を異なる方法で処理するため、予測可能な結果を​​得るために使用されます。
  2. 最後の修飾子は、クラスからの継承を禁止します。 多くの場合、定数とそれらを操作するための静的メソッドのセットのみを含むクラスに使用されます。 さて、Stringクラスがfinalであるとしましょう。
  3. 抽象修飾子は、抽象クラスを示すために使用されます。 本質的に、このクラスのオブジェクトを直接作成しないでください。 相続人の一部としてのみ。 抽象として指定されたメソッドを少なくとも1つ含む場合、クラスにはこの識別子が含まれている必要があります。




それでは、インターフェースについて少し話しましょう。 それらは、クラスが何をすべきかを記述するために使用される完全に抽象的なクラスであると考えられるべきですが、それを行う方法に制限を課すことはありません。



  1. すべてのインターフェイスメソッドは、パブリックおよび抽象として暗黙的に宣言されます。 したがって、 public abstract void foo()



    public void foo()



    または単にvoid foo()



    をインターフェイス内に明示的に記述したかどうかは関係ありません。 コンパイラは、これをpublic abstract void foo()



    として認識します。
  2. インターフェイスは完全に抽象的であるため、final(単純に意味のない)、strictfp(単に神秘的な標準に従うものはありません)、またはネイティブの概念はそれらに適用できません。
  3. インターフェースは、1つ以上の他のインターフェースを拡張(拡張)できます。 そして彼らだけ。 インターフェースのみを拡張できます。
  4. インターフェイスは、他のインターフェイスを実装(実装)できません。




インターフェイス内で間接的に宣言できることに注意してください。 さらに、インターフェイスで描画するフィールドはすべて、public、static、およびfinal修飾子を受け取ります。 インターフェイス内でint a = 48



public int a = 48



またはpublic static final int a = 48



かどうかは関係ありません。 3つの宣言はすべて、それが示唆するすべてを含むpublic static final a = 48



として認識されます。



今日は以上です。 次回は、クラスのフィールドとメソッドにアクセス修飾子を使用する機能をさらに詳しく検討してみます。 さらに、プリミティブ型、配列、静的変数を検討し、最初のテストに合格して、すべてがダイジェストおよびダイジェストされているかどうかを確認します。 テストをGoogleドキュメントのフォームとして形式化します。



興味のある方は、認定されたオラクルパートナーのサイトを通じて、この試験の登録方法に関する詳細な手順を公開することもできます。 私は個人的に、どこで何を選ぶべきか、誰が書くべきか、誰と交渉するべきかを理解するために、Oracleサポートに連絡しなければなりませんでした。



ご清聴ありがとうございました!



All Articles