黑马程序员技术交流社区
标题:
==和equals的区别,终于明白了!!!!
[打印本页]
作者:
18353666072
时间:
2014-6-12 15:48
标题:
==和equals的区别,终于明白了!!!!
1。==是个关系运算符,当被比较者是基本类型时,比较其值是否相等;
2。==当被比较者是引用类型时,比较其是否引用同一个对象(或者说比较其是否指向同一个内存地址).
3。equals是object中的方法。如果没有被复写则和==是相等的。
4。equals如果被复写了那么就根据他复写的用,举个例子。。。String里的equals方法就被复写了,它就用于比较值是否相等
5. 基本数据类型在"栈"中存的是其内容值,而对象类型在"栈"中存的是地址,这些地址指向"堆"中的对象。
6.,"=="和"!="比较的是地址.也可认为"=="和"!="比较的是对象句柄;而equals()比较的是对象内容.或者说,,"=="和"!="比较的是"栈"中的内容,而equals()比较的是"堆"中的内容.
7. Java的基本数据类型为(char,byte,short,int,long,float,double,boolean)。
8.,如果一个类没有自己定义equals方法,它默认的equals方法(从Object类继承的)就是使用==操作符,也是比较两个变量指向的对象是否是同一个对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可以认为两个对象的内容是相同的。
9.
public class Test {
public static void main(String[] args) {
Integer p = 1;
Integer q = 1;
Integer i = new Integer(1);
Integer j = new Integer(1);
if(p == q){
System.out.println("integer:p == q"); //实际结果
}else{
System.out.println("integer:p != q");
}
if(p.equals(q)){
System.out.println("相等"); //实际结果
}else{
System.out.println("不相等");
}
if(i == j){
System.out.println("int:i == j");
}else{
System.out.println("int:i != j"); //实际结果
}
if(i.equals(j)){
System.out.println("相等");//实际结果
}else{
System.out.println("不相等");
}
String a = "abc";
String b = "abc";
String c = new String("abc");
String d = new String("abc");
if(a == b){
System.out.println("abc对象相等"); //实际结果
}else{
System.out.println("abc对象不相等");
}
if(a.equals(b)){
System.out.println("ab相等"); //实际结果
}else{
System.out.println("ab不相等");
}
if(c.equals(d)){
System.out.println("cd相等"); //实际结果
}else{
System.out.println("cd不相等");
}
if(c == d){
System.out.println("cd对象相等");
}else{
System.out.println("cd对象不相等"); //实际结果
}
}
}
复制代码
OILE@WZ~F1EJD7}$@399]WN.jpg
(113.3 KB, 下载次数: 2)
下载附件
2014-6-12 15:48 上传
运行结果
作者:
Boiled_Water
时间:
2014-6-12 15:58
好,学习了,赞个
作者:
汤姆纳斯
时间:
2014-6-12 18:12
多谢分享,仔细看看。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2