当前位置: 代码迷 >> Java相关 >> 能不能利用这两个程序讲解一下==和equals的区别?
  详细解决方案

能不能利用这两个程序讲解一下==和equals的区别?

热度:112   发布时间:2006-08-13 23:40:20.0
能不能利用这两个程序讲解一下==和equals的区别?

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的方法,这是什么意思?
谢谢。

搜索更多相关的解决方案: equals  String  static  讲解  

----------------解决方案--------------------------------------------------------
==比较引用
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判断内容是否相同
----------------解决方案--------------------------------------------------------
楼上的讲的不对的。。。。。
----------------解决方案--------------------------------------------------------
  相关解决方案