「Java プログラマであるかを見分ける 10 の質問」に回答してみる
- == 演算子と equals メソッドの違いは何か ?
- 文字列の+演算子による連結とStringBuilderを使った連結の違いを説明せよ。
- List
のようにジェネリクス型を使う主たる目的は何か ? - オブジェクトがガベージコレクション (GC) される主たる条件は何か ?
- チェック例外と非チェック例外の違いを型と例外処理の観点で説明せよ。
- フィールドのアクセス修飾子を private にし getter/setter メソッドを提供する事でフィールドを参照する設計方針を取る主な理由を説明せよ
- NullPointerException が発生するのは主にどういう状況か ?
- オーバーロードとオーバーライドの違いは何か?
- コンストラクタとは何か ?
- インターフェイスを利用する目的を一つ説明せよ
- == は参照先が一致しているか。equals メソッドはクラスによって変わる。
- 文字列連結演算子による連結の場合、連結前の文字列はメモリ上に保持され、連結を施した新しい String オブジェクトが生成される。StringBuilder や StringBuffer を使った場合はこのようなことがなく、メモリの節約になる。ちなみに StringBuilder はスレッドセーフではないが、StringBuffer よりは処理が高速。
- Collection 内の型を統一し、キャストの問題を解決するため。
- オブジェクトが不要と判断されたとき、GC のリストに入れられる。実際にいつメモリ上から消えるかはわからない。
- チェック例外は例外処理を書かないとコンパイルエラーになる。非チェック例外は RuntimeException を継承している。例外処理を書かなくてもコンパイルエラーにはならない。
- フィールドを隠蔽し、オブジェクトの独立性を高めるため。
- 参照型変数の値が null のときに参照を試みると発生。
- オーバーロードはメソッド名が同じで引数の数や型などが違うもの。オーバーライドはメソッド名も引数の数や型も同じもので、継承や実装などで使われる手法。
- クラスのインスタンス化の際に実行される特殊なメソッド。おもにフィールドの初期化などに使う。
- 実装を変えることでポリモーフィズム(多態性)を実現するため。
真面目に書いてみましたが間違いがあったらバシバシ突っ込んでください。
11/11/26 追記 : 元質問のサイトが修正されていたのでそれに合わせてこちらも修正しておきました。