==和equals的区别

原创 2016年05月30日 14:01:52
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;
    }


==和equals方法究竟有什么区别

  • 2013年04月22日 10:17
  • 11KB
  • 下载

==和equals的应用区别

  • 2012年06月12日 15:31
  • 12KB
  • 下载

Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系

equals()是判读两个Set是否相等[前提是equals()在类中被覆盖]。==决定引用值是否指向同一对象。 1、当向集合set中增加对象时,首先计算要增加对象的hashCode码,根据该值来得到...
  • lishehe
  • lishehe
  • 2014年01月28日 11:43
  • 5037

equals(Object) 与 == 的区别

  • 2010年09月03日 15:49
  • 27KB
  • 下载

==和equals的区别

  • 2013年09月10日 14:27
  • 47KB
  • 下载

hashCode与equals的区别与联系

一、equals方法的作用    1、默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引...
  • afgasdg
  • afgasdg
  • 2011年10月20日 03:01
  • 79640

Java中的==和equals区别

  • 2013年01月30日 10:23
  • 15KB
  • 下载

java中equals和==的区别.doc

  • 2011年06月02日 09:49
  • 42KB
  • 下载

Java中两个对象的比较 equals()方法和==号的区别

在Java中,时不时我们会把两个对象进行,然而得到的结果却不是我们想的结果,这是怎么回事呢? 一、两种形式的比较:比较时,我们要弄清楚是哪一种比较。       1.值类型比较       即内容...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:==和equals的区别
举报原因:
原因补充:

(最多只允许输入30个字)