public class fourtest {
public static final String i = "b"; public static void main(String args[]) {
String b = "ab";
String a = "a" + i;
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
输出 true, ture。 这个结果是编译器优化的结果。public class fourtest {
public static final String i = null; public static void main(String args[]) {
String b = "anull";
String a = "a" + i;
System.out.println(a == b);
System.out.println(a.equals(b));
}
}输出 false ,true。 这个时候为啥不是true,true。
public static final String i = "b"; public static void main(String args[]) {
String b = "ab";
String a = "a" + i;
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
输出 true, ture。 这个结果是编译器优化的结果。public class fourtest {
public static final String i = null; public static void main(String args[]) {
String b = "anull";
String a = "a" + i;
System.out.println(a == b);
System.out.println(a.equals(b));
}
}输出 false ,true。 这个时候为啥不是true,true。
后者"a" + i中的i是null,强制类型转换后,它被当成一个对象放入堆中,因此地址不同。仅仅是个人见解,还请各位指教。
http://blog.csdn.net/chenshuang_com/article/details/7743296