public class Test1{
public static void main(String args[]){
String a="1234";
String b="1234";
String c = new String("1234");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));
}
}
A.true false true
B.true true false
C.true false false
D.true true true
A.equals只是进行值判断不对类是不是同一个引用不进行判断,而==判断包括值和类引用.通过String a = "1234"这种产生的字面字符串,如果内存中存在字符串“1234”则会直接引用,如果没有则分配内存,因此a==b的结果为true。而String c = new String("1234"),则会分配内存控件存储字符串,不考虑之前是否存在。因此a==c的结果false.由于a和c的值都是"1234"因此a.equals(c)的结果为true.同时Integer中也是类似的原理,因此使用Integer a = 12;时会在某种情况下提高程序的性能。 |
|