java中的基础数据范例推断是不是相称,直接运用”==”就好了,相称返回true,不然,返回false。
obj1==obj2 推断是obj1,obj2这两个援用变量是不是相称,即它们所指向的对象是不是为同一个对象。弦外之音就是请求两个变量所指内存地址相称的时刻,才返回true,每一个对象都有本身的一块内存,因而必需指向同一个对象才返回ture。
假如想要自定义两个对象(不是一个对象,即这两个对象离别有本身的一块内存)是不是相称的划定规矩,那末必需在对象的类定义中重写equals()要领,假如不重写equals()要领的话,默许的比较体式格局是比较两个对象是不是为同一个对象。
在Java API中,有些类重写了equals()要领,它们的比较划定规矩是:当且仅当该equals要领参数不是 null,两个变量的范例、内容都雷同,则比较效果为true。
这些类包含:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等,太多太多了,然则罕见的就这些了,细致能够检察API中类的equals()要领,就知道了。
重写equals()要领的步骤平常以下:
1、先用“==”推断是不是相称。
2、推断equals()要领的参数是不是为null,假如为null,则返回false;由于当前对象不可能为null,假如为null,则不能挪用其equals()要领,不然抛java.lang.NullPointerException非常。
3、当参数不为null,则假如两个对象的运行时类(经由过程getClass()猎取)不相称,返回false,不然继承推断。
4、推断类的成员是不是对应相称。往下就随意发挥了。
示例:
public class Dog { private int age; private String name; public Dog(int age,String name){ this.age=age; this.name=name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { if(obj==null){ return false; } if(this==obj){ return true; } if(obj instanceof Dog){ Dog dog=(Dog)obj; if(dog.age==this.age&&dog.name.equals(this.name)){ return true; }else{ return false; } } return false; } public static void main(String[] args){ Dog dog1=new Dog(12,"wangcai"); Dog dog2=new Dog(12,"wangcai"); Dog dog3=new Dog(16,"wangcai"); System.out.println(dog1.equals(dog2));//true System.out.println(dog1.equals(dog3));//false }}
更多java学问请关注java基础教程。
以上就是java中推断是不是相称的要领的细致内容,更多请关注ki4网别的相干文章!