int a = 1;
Integer b = new Integer(1);
System.out.println(a==b);
结果为什么是true
但是
String c = "abc";
String d = new String("abc");
System.out.println(c == d);
结果就是false了?
请说一下具体的原因
Integer b = new Integer(1);
System.out.println(a==b);
结果为什么是true
但是
String c = "abc";
String d = new String("abc");
System.out.println(c == d);
结果就是false了?
请说一下具体的原因
String d = new String("abc");
System.out.println(c == d);
结果就是false了?
c 为常量池中的,而d为堆中的地址
Integer b = new Integer(1);
这样就拆箱为了Integer b=1;
a==b 就是比较的数值了 而不是对象了
而字符串那个就不是了 他比较的是两个对象是否相等 你new 了两个对象 那么肯定不是相等的了
String c = "abc";
String d = new String("abc");
c 和 d的引用指向了不同的对象 也就是内存地址不是一样的。
如果是equals方法的话就是相等的了,用为String类覆写了Object类中的equals方法
我是个新手 ,,理性采纳哈。。可能有说的不对的地方。
String是比较地址值类型和引用类型的区别