怎样判断两个Object是不是相等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样判断两个Object是不是相等相关的知识,希望对你有一定的参考价值。
java没有直接判断两个雷是否相同,但提供了如下方法:1、如果说两个对象的判断可以使用 equals,或者 ==。
2、如果判断对象是否某个类 可以使用 instanceof ,isInstance
3、如果两个类的比较 可以使用 isAssignableFrom,但只能得到是否是自身或者子类的结果,不能完
如下代码:
import java.util.ArrayList;
public class ceshi
public static void main(String[] args)
String s1 = new String("javaisland");//测试两个对象是否相同
System.out.println(s1 instanceof String); // true
String s2 = new String("javaisland");//测试是否对象属于某个类
System.out.println(String.class.isInstance(s2)); // true
System.out.println(ArrayList.class.isAssignableFrom(Object.class)); // false
System.out.println(Object.class.isAssignableFrom(ArrayList.class)); // true
参考技术A override Equal方法其实会是一个比较复杂的方法。使用时需要慎重。。特别是你的类里面本身还有很多复杂对象的时候。需要考虑完整。否则你的比较结果会是不准确的。 参考技术B java没有直接判断两个雷是否相同,但提供了如下方法:
1、如果说两个对象的判断可以使用 equals,或者 ==。
2、如果判断对象是否某个类 可以使用 instanceof ,isInstance
3、如果两个类的比较 可以使用 isAssignableFrom,但只能得到是否是自身或者子类的结果,不能完
如下代码:
import java.util.ArrayList;
public class ceshi
public static void main(String[] args)
String s1 = new String("javaisland");//测试两个对象是否相同
System.out.println(s1 instanceof String); // true
String s2 = new String("javaisland");//测试是否对象属于某个类
System.out.println(String.class.isInstance(s2)); // true
System.out.println(ArrayList.class.isAssignableFrom(Object.class)); // false
System.out.println(Object.class.isAssignableFrom(ArrayList.class)); // true
JS判断两个对象内容是不是相等
参考技术A ES6有一个方法来判断两个对象是否相等但是这个相等,和我们平时要的相等可能不一样
这个方法判断的是a和b是不是同一个指针的对象
比如说
但是下面这种情况就不管用了
当我们只需要两个对象的内容相同的时候,他就没效果了
思路
只要两个对象的名和键值都相同。那么两个对象的内容就相同了
1.用Object.getOwnPropertyNames拿到对象的所以键名数组
2.比对键名数组的长度是否相等。否=>false。真=>3
3.比对键名对应的键值是否相等
粗略一看没问题
但是细心的同学发现如果 键值也是对象的话
那这个方法就不管用了
这个时候递归一下就可以解决了
注意,递归的时候要判断prop是不是Object,然后会进入无限递归的死循环
以上是关于怎样判断两个Object是不是相等的主要内容,如果未能解决你的问题,请参考以下文章