Java
スーパークラスが直列化可能でなく,サブクラスが直列化可能である場合,サブクラスのオブジェクトの入出力を行うときには引数のないコンストラクタが呼ばれるそうです.また,スーパークラスが直列化可能な場合,サブクラスも直列化可能であるため,コンス…
Javaにおいて,入出力ストリームを通してオブジェクトをやり取りできるようにする仕組みを”直列化(シリアライズ)”と呼ぶそうです.ざっくり言うと,オブジェクト単位でファイルに読み書きができるようにする仕組みです. オブジェクトを入出力するストリー…
Javaでは,文字列を管理するクラスとして,java.langパッケージに含まれる次の3つがあります.(A) String (B) StringBuffer (C) StringBuilderそれらの大きな違いを次の表の通りです. String StringBuffer StringBuilder 文字列変更可能 × ○ ○ スレッドセー…
無名クラスは,特定のスーパークラス,インタフェースを継承,実装して使用します.その際にメソッドのオーバーロードやオーバーライドができるのですが,無名クラスのインスタンスを参照型変数に代入して使用する場合,オーバーロードしたメソッドは使用で…
Javaではクラスの中にクラスを定義することができます.しかし,その際のメンバやメソッドへのアクセスがややこしいので,プログラムを書いてみて試してみました.まず,インナークラスは大きく次の4つに分類されます. (1)非staticなインナークラス (2)stat…
Threadを2つの方法で実装してみる JavaでのThread生成方法は大きく2つあります. ・方法1 Threadクラスを継承したクラスを作成し,それを利用する方法. ・方法2 Threadクラスのコンストラクタの引数にRunnableインタフェースを実装したクラスのオブジェクト…
Javaの例外処理では,catchブロックを複数書くことがありますが,どうやらサブクラスのcatch文を先に指定しないといけないようです. 例えば次の例外クラスの継承関係を見てみます. ExceptionクラスのサブクラスにはRuntimeExceptionクラスがある. Runtime…
ファイナライザとは,インスタンスがメモリ領域から破棄される直前に呼び出されるメソッドです.ファイナライザのメソッド名はfinalize()で,次のように定義されています. protected void finalize() throws Throwable() メモリ領域からのインスタンスの破…
Javaでは可変長引数を利用することで,メソッドの引数を任意に設定できる.JDK 5.0で新しく追加された機能です. 可変長引数の書式は次の通り. メソッド名(引数の型... 配列名){...} 実引数が複数ある場合,その最後に可変長配列を定義できる. メソッド名(…