―Javaプログラミングの前提知識―
2003/3/27
equals()メソッド |
ワンポイントQuestion |
次のプログラムを実行したときの結果として正しいものはどれですか? (単一選択)
class q22 { |
|
equals()メソッド |
文字列を比較する場合、==を利用するのではなく、java.lang.Stringクラスのequals()メソッドを利用します。==は、変数に格納されている値が同じかどうかを比較します。基本データ型では変数に値が保持されているので、変数に代入されている値が同じかどうかでtrue/falseを判断します。
文字列の場合、Stringクラスをインスタンス化したオブジェクトのため、変数に代入されている値は、メモリ上の別の場所に存在する文字列オブジェクトを参照しているリファレンスです。
別々の文字列オブジェクトは別々に存在しているため、それぞれを参照しているリファレンスは異なるものになります。そのため、==で比較してもfalseになります。2つの同じ文字列「javabook」と「javabook」がある場合でも、別々のインスタンスとして存在しており、2つの変数が別のインスタンスを参照していれば、==でtrueになりません。
equals()メソッドで比較する場合、変数に代入されている参照ではなく、その参照されているオブジェクト自身が比較されます。そのため、別のインスタンスとして存在する場合でも、trueが返ります。
そのほかの代表的なクラスのequals()メソッドについて確認します。java.lang.Objectクラスのequals()メソッドは、オブジェクトの参照であるxとyが同じオブジェクトを参照する場合にだけ、すなわちx==yがtrueの場合にtrueを返します。java.lang.Booleanクラスのequals()メソッドは、引数がnullではなく、このオブジェクトと同じboolean値を表すBooleanオブジェクトの場合にだけtrueを返します。
POINT |
equals()メソッドは、比較対象のオブジェクト同士の型が一致している場合にのみ比較が行われます。 |
ワンポイントQuestionの解答 |
正解 C
Java2ラーニングブック
−310-035 編− 本記事は@ITハイブックスシリーズ「Java2ラーニングブック −310-035 編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|