【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷




―Javaプログラミングの前提知識―

@ITハイブックス編
2003/3/27
Javaプログラミング
ワンポイントレクチャーについて

   equals()メソッド

   ワンポイントQuestion

 次のプログラムを実行したときの結果として正しいものはどれですか? (単一選択)

class q22 {
  public static void main(String[] args) {
    String s1 = new String("100");
    String s2 = new String("100");
    Integer i = new Integer(100);
    if (s1.equals(i))
      System.out.println("OK s1-i");
    else if (s1 == s2)
      System.out.println("OK s1-s2");
    else
      System.out.println("NG");
  }
}

A OK s1-i
B OK s1-s2
C NG
D コンパイルエラーが発生
E 実行時の例外が発生

   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ハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX



ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています