イコールイコール
- 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
- Search
- Feeds
- Bookmarks
- Meta