Home > blog > イコールイコール

イコールイコール

  • 2009-01-18 Sunday 15:59
  • Posted by d9

Javaで文字列の一致を確認するのに「==」ではなく「equals()」を使うのは基本だと思いますが、これを初心者にググレと言っても、引っ掛ける単語が難しいんですよね。また、検索結果を見てもちんぷんかんぷんなことが多いようですので、ざくっと確認用のサンプルプログラムを作りました。

サンプルプログラム

package net.nanamin.sample.stringequalsample;

/**
 * Stringの参照型の比較と内容の比較の違いを確認するサンプルプログラム.
 *
 * @author d9
 */
public class StringEqualSample {

    /**
     * エントリポイント.
     *
     * @param args
     */
    public static void main(String[] args) {
        StringEqualSample me = new StringEqualSample();
        me.showResult();
    }

    /**
     * 実行結果を出力します.
     */
    public void showResult() {
        String s0 = new String("AAAA");
        String s1 = new String("AAAA");
        String s2 = "BBBB";
        String s3 = "BBBB";
        String s4 = "AAAA";
        String s5 = "AAAA";
        String s6 = null;
        String s7 = null;
        System.out.println(this.equalTest(s0, s1, s2, s3, s4, s5, s6, s7));
    }

    /**
     * 引数を相互比較し、結果文字列を返します.
     *
     * @param args 比較対象の文字列(可変長引数)
     * @return 結果文字列
     */
    private String equalTest(String... args) {
        if (args == null) {
            throw new IllegalArgumentException("引数にnullは許可されません。");
        }
        StringBuilder buf = new StringBuilder();
        int idx = 0;
        for (String arg1 : args) {
            buf.append("--------------------------------------------------------------");
            buf.append(" // args[" + idx++ + "]との比較結果\n");
            for (String arg2 : args) {
                buf.append(arg1 + "\t" + arg2);
                buf.append("\tアドレス比較(==):");
                buf.append(arg1 == arg2);
                buf.append("\t内容比較(equals):");
                if (arg1 != null) {
                    buf.append(arg1.equals(arg2));
                } else {
                    buf.append("-");
                }
                buf.append("\n");
            }
        }
        return buf.toString();
    }
}

実行結果

-------------------------------------------------------------- // args[0]との比較結果
AAAA	AAAA	アドレス比較(==):true	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	null	アドレス比較(==):false	内容比較(equals):false
AAAA	null	アドレス比較(==):false	内容比較(equals):false
-------------------------------------------------------------- // args[1]との比較結果
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):true	内容比較(equals):true
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	null	アドレス比較(==):false	内容比較(equals):false
AAAA	null	アドレス比較(==):false	内容比較(equals):false
-------------------------------------------------------------- // args[2]との比較結果
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	BBBB	アドレス比較(==):true	内容比較(equals):true
BBBB	BBBB	アドレス比較(==):true	内容比較(equals):true
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	null	アドレス比較(==):false	内容比較(equals):false
BBBB	null	アドレス比較(==):false	内容比較(equals):false
-------------------------------------------------------------- // args[3]との比較結果
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	BBBB	アドレス比較(==):true	内容比較(equals):true
BBBB	BBBB	アドレス比較(==):true	内容比較(equals):true
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	AAAA	アドレス比較(==):false	内容比較(equals):false
BBBB	null	アドレス比較(==):false	内容比較(equals):false
BBBB	null	アドレス比較(==):false	内容比較(equals):false
-------------------------------------------------------------- // args[4]との比較結果
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	AAAA	アドレス比較(==):true	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):true	内容比較(equals):true
AAAA	null	アドレス比較(==):false	内容比較(equals):false
AAAA	null	アドレス比較(==):false	内容比較(equals):false
-------------------------------------------------------------- // args[5]との比較結果
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):false	内容比較(equals):true
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	BBBB	アドレス比較(==):false	内容比較(equals):false
AAAA	AAAA	アドレス比較(==):true	内容比較(equals):true
AAAA	AAAA	アドレス比較(==):true	内容比較(equals):true
AAAA	null	アドレス比較(==):false	内容比較(equals):false
AAAA	null	アドレス比較(==):false	内容比較(equals):false
-------------------------------------------------------------- // args[6]との比較結果
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	BBBB	アドレス比較(==):false	内容比較(equals):-
null	BBBB	アドレス比較(==):false	内容比較(equals):-
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	null	アドレス比較(==):true	内容比較(equals):-
null	null	アドレス比較(==):true	内容比較(equals):-
-------------------------------------------------------------- // args[7]との比較結果
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	BBBB	アドレス比較(==):false	内容比較(equals):-
null	BBBB	アドレス比較(==):false	内容比較(equals):-
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	AAAA	アドレス比較(==):false	内容比較(equals):-
null	null	アドレス比較(==):true	内容比較(equals):-
null	null	アドレス比較(==):true	内容比較(equals):-

アドレス比較と内容比較という単語はどうかと思うのですが、適当な言葉を思いつかなかったので、とりあえずこれで。

Comments:0

Comment Form
Remember personal info

Home > blog > イコールイコール

Search
Feeds
Meta

Return to page top