記憶庫

記憶庫

言語仕様

「浅い比較」の結果が true であっても「深い比較」の結果が true になるとは限らない罠

こんな場合。 public class EqualsTest { public static void main(String args[]) { EqualsTest a = new EqualsTest(); EqualsTest b = a; EqualsTest c = new EqualsTest(); System.out.println("a == b : " + (a == b)); System.out.println("a == c : …

メソッドに関する tips

メソッドのシグネチャについて Java のメソッドのシグネチャは、メソッド名、引数の個数・型・並び順の組み合わせである。修飾子、戻り値、throw される検査例外はシグネチャに含まれない。例を挙げると、 public static final String show(String filename,…

JSP の書式

JSP ページは、以下の要素で構成される。 テンプレートテキスト 通常の HTML 構文。 以下のように JSP XML シンタックスとして記述することも可能。 <jsp:text>テンプレートテキスト<br/></jsp:text> コメント HTML のコメントとは異なる。 隠しコメントはサーブレットコンテナから無視…

インタフェースとポリモーフィズム

インタフェースとは? インタフェースとは、オブジェクト指向の三大要素の1つである「ポリモーフィズム(多態性)」を実現するための仕組みである。 「クラスから実装を取り除き、外部に公開されている仕様のみを定義したもの」。 ポリモーフィズムとは? ポ…

スタックおよびスタックトレースの出力方法について

スタックとは、本来はLIFO(後入れ先出し)方式のデータ構造のことであるが、ここでは Java VM 上にある管理領域のスタックについて書く。 スタックとは? メソッドを呼び出すと、呼び出し情報が Java VM 上のスタックと呼ばれる領域に格納される。 この呼び…

現在の時刻をミリ秒単位で取得する方法

現在の時刻をミリ秒単位で取得するには、System#currentTimeMillis() メソッドを使用する。 このメソッドは、1970年1月1日0時0分0秒(UNIX紀元)からの経過時間をミリ秒単位で取得する。 以下のようにすれば、処理に掛かった時間を測定することが可能。 long…

Javaの定数について

Java で定数を定義する方法は以下の通り。 static final int HOGE = 3; 慣習的に、定数名は全て大文字にする。 static 修飾子は変数がインスタンスの有無に関係なく静的に存在することを示し、final 修飾子は一度設定された値を変更できないことを示す。 ア…

アクセス修飾子

アクセス修飾子はスコープを制限するための修飾子であり、変数、メソッド、クラスを修飾する。 Java のアクセス修飾子には以下の3種類がある。 ・public ・protected ・private アクセス修飾子は省略することも可能。 各アクセス修飾子を指定した場合のスコ…

シャットダウンフックの使用方法

Java VM の終了時に何らかの処理を行いたい時は、シャットダウンフックと呼ばれるスレッドを作成し、登録しておけばよい。 方法は以下の通り。 package knowledgefort.labo.thread.shutdownhook; class ShutdownHookLabo { public static void main(String[]…

transient 修飾子

transient 修飾子の特徴は以下の通り。 transient 修飾子は変数しか修飾しない。 transient で宣言された変数は、直列化(シリアライズ)の対象外となる。 static な変数はそもそも直列化の対象外なので、以下の記述はエラーではないが無意味。 private stat…

初期化処理を最速で実行するには?

初期化処理は、どこに記述すれば最速で実行されるかを検証する。 まずは、以下のようなクラスを作成。 class TestClass { public TestClass(String aMsg) { System.out.println(aMsg + " から呼び出されました。"); return; } } 上記クラスは、インスタンス…