==和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;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值