==和equals的区别

package per.songhongkang.chapter4.day08;

public class TestEquals {
	public static void main(String[] args) {
		TestEquals tst1=new TestEquals();
		tst1.test1();
//		equals();1)只能处理引用类型变量;2)在Object类中,发现equals()仍然比较的是两个引用变量的地址值是否相等
//		java.lang.Object类,是所有类的根父类;  
//	源码:Object类:public boolean equals(Object obj) {
//	               return (this == obj); }
   
//		
		Person1 p1=new Person1();
		Person1 p2=new Person1();
		System.out.println(p1.equals(p2));//false
		System.out.println(p1==p2);//false,与上面等价
		//像String、包装类、File类、Date类这些重写Object类的equals()方法。
		//比较的是两个对象的“实体内容”是否完全相同。
		String str1=new String("AA");
		String str2=new String("AA");
		System.out.println(str1.equals(str2));//true  why:因为String类重写了equls()方法
		
		
	}
		public void test1(){//		==
//			1.基本数据类型:根据基本数据类型的值判断是否相等。相等则返回true.反之,返回false.
//			注:两端数据类型可以不同。在不同的情况下,也可返回true.
//			2.引用数据类型:比较引用类型的地址值是否相等。
			int i=12;
			int j=12;
			System.out.println(i==j);//true
			char c=12;
			System.out.println(i==c);//true
			float f=12.0F;
			System.out.println(i==f);//true
			int k=65;
			char a='A';
			System.out.println(k==a);//true
			Object obj1=new Object();
			Object obj2=new Object();
			System.out.println("obj1:"+obj1+"\t"+"obj2:"+obj2); 
			//输出结果:obj1:java.lang.Object@6406c7e	obj2:java.lang.Object@6f92c766
			System.out.println(obj1==obj2);//false
			Person1 p1=new Person1();
			Person1 p2=new Person1();
			Person1 p3=p1;
			System.out.println(p1==p2);//false
			System.out.println(p1==p3);//true
			
			
	
		
	}

}
class Person1{
	
}

String类中重写equals方法的源码为:

public boolean equals(Object anObject) {
	if (this == anObject) {
	    return true;
	}
	if (anObject instanceof String) {
	    String anotherString = (String)anObject;
	    int n = count;
	    if (n == anotherString.count) {
		char v1[] = value;
		char v2[] = anotherString.value;
		int i = offset;
		int j = anotherString.offset;
		while (n-- != 0) {
		    if (v1[i++] != v2[j++])
			return false;
		}
		return true;
	    }
	}
	return false;
    }


阅读更多
个人分类: Java
上一篇多态性
下一篇String类的内存解析——字符串常量池
想对作者说点什么? 我来说一句

java中equals和==的区别.doc

2011年06月02日 42KB 下载

hashcode代码

2015年11月20日 47KB 下载

==和equals的应用区别

2012年06月12日 12KB 下载

equals(Object) 与 == 的区别

2010年09月03日 27KB 下载

java 资料 equals 与== 的区别

2011年08月05日 28KB 下载

equals与==之间的区别

2008年10月05日 2KB 下载

String中==与equals区别验证

2011年11月09日 8KB 下载

没有更多推荐了,返回首页

关闭
关闭