public class C1
{
static String abc = "abc"; static String def = "def";
public static void main(String[] args)
{
if ( (abc + def).equals("abcdef") )
System.out.println("a");
else
System.out.println("b");
}
}
×××××××××××××××××××××××
public class C2
{
static String abc = "abc"; static String def = "def";
public static void main(String[] args)
{
if ( (abc + def) == "abcdef" )
System.out.println("a");
else
System.out.println("b");
}
}
第一个输出为a,第二个输出为b
能不能详细解释一下==和equals在做比较时有什么不同?还有就是说equals继承了一个来自java.lang.Object的方法,这是什么意思?
谢谢。
----------------解决方案--------------------------------------------------------
==比较引用
Object中的equals比较的也是引用,在String和一些包装类中被重写,比较的是对象的实际内容
----------------解决方案--------------------------------------------------------
能不能解释一下第二个为什么输出是b?
“==比较的是引用”不是很懂,这里的引用指的是什么?
谢谢。
----------------解决方案--------------------------------------------------------
引用就是地址呗
----------------解决方案--------------------------------------------------------
引用就是产生一个对象时的首地址(可以理解时装对象的位置).
这个一般靖况下是不同的.
不过可以把地址传给一个变量,这时就相同了.
String a="",b="";
a=b; //把b的位置传给a,这时a,b指向的位置都是b了.
==对非对象的数据比较的是其值.
如 int a=3,b=3;
a==b 就为true
对对象时就是比较他们的地址.
----------------解决方案--------------------------------------------------------
说的更白点其实object的equals用的就是==比较,只是在String 里equals被重写了
----------------解决方案--------------------------------------------------------
对于实例:==是引用相同,即地址。
equals:你所举例是。含有字符串相等。
----------------解决方案--------------------------------------------------------
== 比较的是对象的地址
equals :比较对象的内容
----------------解决方案--------------------------------------------------------
= =判断是否指向同一内存地址
equals判断内容是否相同
----------------解决方案--------------------------------------------------------
楼上的讲的不对的。。。。。
----------------解决方案--------------------------------------------------------