あるよ (このセリフはHEROが好きな人はよく使う…はず )
「文字列が同じでも Object としては一致しないことがあったりするんですか?> String」という質問がツイッターにあったので、サンプルプログラムを作ってみた。ちなみにつぶやいた人が疑問に思ったことを解決するプログラムである保証はない。お遊び。
public class Sample {
public static void main(String[] args) {
java.util.List<String> list = new java.util.LinkedList<String>();
String s = "a";
list.add("a");
list.add(s);
list.add(new String(s));
list.add(new String("a"));
for (String e : list) {
System.out.println("----");
System.out.println("a".equals(e));
System.out.println("a" == e);
}
}
}
public static void main(String[] args) {
java.util.List<String> list = new java.util.LinkedList<String>();
String s = "a";
list.add("a");
list.add(s);
list.add(new String(s));
list.add(new String("a"));
for (String e : list) {
System.out.println("----");
System.out.println("a".equals(e));
System.out.println("a" == e);
}
}
}
結果
$ javac Sample.java
$ java Sample
----
true
true
----
true
true
----
true
false
----
true
false
$ java Sample
----
true
true
----
true
true
----
true
false
----
true
false
こういうことでした。