【Java開発】第26回 Objectクラス

Java入門講座

はじめに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はObjecクラスについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第25回 enumです。

Objectクラスとは?

ObjectクラスはすべてのJavaクラスの最高位親クラスです。

 

extendsキーワードで直接継承されていませんが、すべてのクラスはObjectクラスを継承しています。

 

なので、どんなクラスでもObjectクラスのメソッドを利用することができます。

 

Objectクラスの主なメソッド

〇toStringメソッド

ObjectクラスのtoStringメソッドは呼び出し元の情報を返還するメソッドです。

 

返還される情報は「クラス名@アドレス値のハッシュコード」です。

 

しかし、ほかのJavaAPIクラスはtoStringメソッドをオーバーライドして使うので、返還する情報が異なります。

 

サンプル

上記のようにtoStringメソッドが存在されないクラスも

Objectクラスを継承しているので、toStringメソッドを使うことができます。

もちろん、配列もObjectクラスを継承しているので、toStringメソッドを使うことができます。

しかし、ListのようなJava APIクラスはObjectのメソッドをオーバーライドして使うので、返還する情報が異なります。

 

出力結果

 

〇equalsメソッド

equalsメソッドは二つのインスタンスをアドレスを比較して同一なアドレスを参照しているかを検査するメソッドです。

 

equalsメソッドは基本的にインスタンスのアドレスのハッシュコードを比較して結果を判定します。

 

サンプル

他のクラスのhashCodeメソッドはインスタンスのメモリアドレスのハッシュコードを返還しますが、

 

Stringクラスは文字列の値のハッシュコードを返還するので、メモリアドレスが異なっても文字列の値が同一であるとequalsメソッドがtrueを返還します。

 

出力結果

 

〇finalizeメソッド

だれも参照しないインスタンスのデータを消すときに呼び出されるように約束されているメソッドです。

 

しかし、このメソッドを直接使うことよりGarbage Collectorがデータを削除するように置く方を推奨します。

 

なぜかというと、Javaではfinalizeメソッドが呼ばれた時、親クラスのfinalizeメソッドを呼び出しません。

 

なので、子供クラスのデータしか破壊され、親クラスのデータはメモリ上でそのまま存在する可能性があります。

 

上記のメソッド以外にもスレッドの運用のためのメソッドなどが存在しますが、今回の記事では扱いません。

以外のメソッドの詳細はこちらを参照してください。

終わりに

今回の記事は以上になります。

次回はLambdaを学びましょう。

ご覧いただきありがとうございます。

 

コメント