JavaSE-==和equals()
package com.btp.t2; /* Object类是所有类的根类 * * "==" * 1.基本数据类型:根据基本数据类型的值判断是否相等。相等返回true, * 不相等返回false,不拘泥于数据类型。两端数据类型可以不同,在不同 * 的情况下,也返回true * 2.引用数据类型:比较引用类型变量的地址值是否相等。就是对应的堆空 * 间的对象实体的首地址值。 * * * "equals()":只能处理引用类型变量 * Object的equals方法: * public boolean equals(Object obj) { * return (this == obj); * } * 通过源码发现,Object类的equals方法也是比较引用的地址值 * 但是可以通过重写equals方法来实现功能。像String类,包装类,File类, * Date类这些重写了Object类的equals()方法的类,比较的是两个对象的实体 * 内容是否完全相同。 */ public class TestEquals { public static void main(String[] args) { TestEquals t=new TestEquals(); //t.test1(); t.test2(); } public void test2() { Person1 p1= new Person1(); Person1 p2= new Person1(); System.out.println(p1.equals(p2));//false,和System.out.println(p1 == p2);一样 String str1=new String("AA"); String str2=new String("AA"); System.out.println(str1 == str2);//false System.out.println(str1.equals(str2));//true,因为String类重写了equals方法 Object ob=new String("hehe"); System.out.println(ob.equals("hehe"));//true //重写equals()测试 Person2 p3= new Person2(true); Person2 p4= new Person2(true); System.out.println(p3.equals(p4));//true } public void test1() { // "==" int i=12; double d=12.00; System.out.println(i == d);//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); System.out.println(obj2); 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 { } class Person2 { boolean k; public boolean isK() { return k; } public void setK(boolean k) { this.k = k; } public Person2(boolean k) { setK(k); } //重写equals() public boolean equals(Person2 p) { if(this.k==p.k)return true; else return false; } }