请问java编程中 =和==和equals 有什么区别 ?

来源:百度知道 编辑:UC知道 时间:2024/05/25 09:23:59
可以举例一下吗
它们分贝什么时候 怎么用呢?

请taofengem先看看自己说对了没有再发表批判别人的言论!!!对象是放在内存的对里面的,而不是栈!!!
= 是赋值;
== 判断两个对象所引用的内存地址是否是相同
比如2个字符串对象
String s1 = new String("str");
String s2 = new String("str");
如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。
equals()比较的是对象的值,equals方法是从Object继承来的,Java中任何对象都自动有这个方法; 它是java.lang.Object类中的一个方法。因为java中所有的类都默认继承于Object,所以所有的类都有这个方法。

在Object类源码中是这样写的。
public boolean equals(Object obj) {
return (this == obj);
}

*内存分为四个部分:heap(堆)\stack(栈)\code segment\data segmet\
其中堆中存放的是NEW 出来的对象 而栈中存放的是局部变量 而静态变量和字符串常量放在data segment中 剩下的就是代码了 ,存放在CODE SEGMENT中
http://zhidao.baidu.com/question/90177394.html?si=5
http://zhidao.baidu.com/question/86391504.html?si=4