object的equals方法(C#如何判断object类型是相等的)

本文目录
- C#如何判断object类型是相等的
- object.equals(null)和object==null有什么区别
- 、简述Object类中设计equals成员方法的目的,如果子类中没有重写该方法,Object类中的
- java中users[i].name.equals(name))怎么理解
- JAVA中Object类 equals()方法和“==”怎样区别
- java equals(object obj){},为什么equals里的参数类型必须是object
- JAVA中,为什么object对象中的equals方法比较的是同一,而String对象比较的是相等
C#如何判断object类型是相等的
一般判断是否相等有两种意思:
一是值上的相等(只适合string),这种判断用string.equals(string),
另一种是==判断方式,这种是地址上的判断,判断俩个对象是否来自同一个地址,即:真正意义上的相等.
比如:string str="123"; string str2="123";
str.equals(str1)等于true;
str==str1就等于false;
你题上的s==t属于地址上的判断,应该是false.
object.equals(null)和object==null有什么区别
首先你要先明白它们分别的作用是什么:
object.equals(null),“equals()”方法是比较“值”是否相等;
object==null,“==”比较运算符是用来比较“对象”是否是同一个。
说的简单一点java是面向对象的编程语言:
如果new了一个对象,那么它就有值,它的值可以是“null”;
如果根本就没有new这个对象,那它就不存在,没有办法进行比较,就会出现空指针的异常。
说的有些模棱两可,给你举个例子:
Object object1=new Object();
Object object2=new Object();
Object object3;
object1.equals(object2);//这是true
object1==object2;//未必是true
object3==object2 ;//就要报错,因为object3还未开辟内存,object2不知道指向谁取进行比较。
也就是说,每次new一个对象都是新开辟一块内存,它们分别站在不同的位置上进行比较,equals是比较他们的值,而==相当于比较它们的位置!
不知道你懂了没有,不过你可以问我~
我的qq:287572694(神龙之首)
java精英群:63353323
、简述Object类中设计equals成员方法的目的,如果子类中没有重写该方法,Object类中的
o是形参,转之前先进行了判断,符合条件后才强转转成Person类,然后进行比较
下面的是标准写法,供你参考
通常自己的类里面这样重写equals方法,如果重写equals,则必须重写hashcode方法
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Share other = (Share) obj; // 换成你自己的类
if (cn_share_id == null) {
if (other.cn_share_id != null) // 要比较的成员
return false;
} else if (!cn_share_id.equals(other.cn_share_id))
return false;
return true;
}
java中users[i].name.equals(name))怎么理解
前言
这一篇文章是对java的Object的方法的equals的描述,也包括对重写方法写的一些理解。
一、Object类的equals方法?
1. Object是什么?
首先要明确Object类中有什么,它是什么?
Object类在《java核心技术1》中是这样描述的是Java中所有类的始祖,每个类都是尤其扩展出来的。所以我们创建的类应该都会有应该有这样的表达:
public class Classname extends Object{ }
登录后复制
但其实上公司早已经考虑过这个问题了,所以每个类都是默认继承Object的。所以直接就可以就可以引用Object类中的方法,编译器是不会报错的。
2. equals方法的解析
1、 为什么需要这个方法?
因为传统的逻辑判断“ == ”,是去判断数据在内存堆中地址,基础数据在堆中内存是相同的,所以 “ ==”最后是对数据的值来进行比较的。
2、 equals方法在书上的解析
在《Java核心技术1》中对equals方法的描述是用于检查一个对象是否等于另一个对象,这两个对象是否具有相同的引用。然后接下来我会使用代码,以及代码运行的结果对这个方法进行讲解。
/*
我们创造一个Employee类来验证——一个对象是否等于另一个对象,这两个对象是否具有相同的引用
*/
public class Employee extends Person{
private int salary;
private int worktime;
public Employee(String name, String sex,int salary, int worktime) {
this.name = name;
this.sex = sex;
this.salary = salary;
this.worktime = worktime;
}
/*
现在我们目标是使用equals方法
具体实现是:
1.首先先使用Employee类来进行信息的比对
2.再使用Student类和Employee类进行比对
*/
//step1
Employee employee1 = new Employee("啊狗","男",2000,12);
Employee employee2 = new Employee("啊狗","男",2000,12);
//现在我们创造两个数据皆相同的对象我们现在进行equals方法的判断
System.out.println(employee1.equals(employee2));
登录后复制

终端会给我们输出false,我们可以开调试来看看为什么会输出flase。我们可以看到employee1和employee2地址会不同,这就能解释到《Java核心技术1》对Object类中的equals方法是对比一个对象是否等于另外一个对象。这不仅仅局限于数据的相同,也需要去判断数据存放的地址是否相同。
3. 对上公司的Object类方法的理解
深入的我们可以去看看上公司如何写Object类的equals方法。
public boolean equals(Object obj)
return (this == obj);
}
登录后复制
这里的equals方法接入的是Object类, (this == obj)这句话的意思是当前对象和传入obj地址是否相等,因为 “==”的作用就是比较两者地址是否相同。
4. 对上公司对重写的equals方法的一些理解
那么接下来我们研究方向就是如何让两个数据相同的对象相同,这一点由为之重要。上公司已经非常贴心地为我们重写好了这个方法,我们可以一起看看这个方法地实现。
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return salary == employee.salary && worktime == employee.worktime;
}
登录后复制
if (this == o) return true;
登录后复制
这句话是自反性的体现,先使用this调用当前对象,然后再将对象o放入判断语句中,也就是书中所说的对于非空引用x,x.equals(x)会返回true。
if (o == null || getClass() != o.getClass()) return false;
登录后复制
这句话是将调用getClass()方法,因为两个不同的类不可以做比较,会直接返回false的。具体我们可以利用我们的Student类和Employee类来做比较。
Employee employee1 = new Employee("啊狗","男",2000,12);
Student student = new Student("啊猫","男",18,"智能科学");
//2.再使用Student类和Employee类进行比对
System.out.println(employee1.equals(student));
登录后复制
无论从直观上还是客观上来看,我们都能会觉得终端会输出false,事实如此,确实最后终端是输出了false。
Employee employee = (Employee) o;
登录后复制
这句话又是什么意思呢?这个涉及一个强制类型转化的知识,因为所有类都默认继承或者间接继承Object类,因为前面已经使用getClass方法来判断类是否相同,所以这里不需要进行instanceof来判断两个类是否相同,如果两个类不同的话,直接运行java会抛出ClassExceptionError错误。这一步就是让传入的值获得自己私有得信息,这一个点是涉及多态的缺点的缘由。
return salary == employee.salary && worktime == employee.worktime;
登录后复制
这一句话我们可以通过调试来看看到底相比较的是什么?我们可以看到是将当前对象的salary和worktime的值来和传入对象的salary和worktime的值比较,这样就可以免除“==”比较地址而造成最后的结果和主观感觉不一样的预期。
总结
这篇文章是我第一次写博客,文章结合《java核心技术1》对Object类中的equals方法的一点理解的,本来想写Object类常用API的一个汇总,但是鉴于能力的不足,所以最后仅仅只是写了equals方法的理解。这一次编写博客的过程中,我明显发现自己对很多不理解的地方,本文如果有讲解错误,或者讲解不当的地方,希望大家能指正我的错误,感谢!
JAVA中Object类 equals()方法和“==”怎样区别
==是判断对象的地址是否相等也就是是否是同一个对象equals是具体比较对象的值是否相等。你按照我的 方法理解就没有问题了,深入到内存中,分为堆和栈。==就是比较堆内存的值是否相等(对象地址存放在堆内存),equals()就是比较栈内存的值(对象的值存在于栈内存)在理解==和equals的区别的时候先不要去管String,它是个特例,否则你会被搞晕掉的。String有个常量池。String a="abc";String b="abc";a==b是返回true的,就是因为常量池的原因,实际上a和b是同一个对象。但是String a="abc";String a=new String("abc");这样a==b就是返回flase了,a和b就不是同一个对象(他们的地址不等。)
java equals(object obj){},为什么equals里的参数类型必须是object
equals方法是object类的方法,java中所有的类都是继承object类,所以很多类都重写equals方法,重写方法就说参数类型个数必须相同,否则就不是重写。当然也可以自己写一个方法,那么参数自己可以定。
JAVA中,为什么object对象中的equals方法比较的是同一,而String对象比较的是相等
因为在java中,Object类是所有类的始祖,所有类都直接或者间接继承了它。Object类中equals方法比较的是两个对象是否具有相同的引用,如果两个对象的引用都一样(即指向同一块内存),那它们一定是相等的。
至于为什么要这样设计,因为Object没办法判断是什么来继承他,不能具体的去实现这个逻辑,因此交给它的子类自己根据自己的特征去重写这个方法。举个列子,比如定义了一个人类Person,有子类学生Student和员工Employee类,这时候Person类里面可以有name,age等这些通用的属性。但如果在Person里面定义一个简介(getIntroduction())的方法,就不好具体去叙述,这时候就可以交给子类自己去重写这个方法,比如Student类的getIntroduction()方法里面可以写“什么学校、什么专业、什么年级”等,Employee类里面就可以写“什么行业、什么职位”等。
所以Object很直接,不管你是什么类型,怎么进行比较,只要你们指向同一块内存,那你们就相等。比如String类,重写equals方法后比较的是字符串的具体值,但谁也不能否认,两个引用指向同一个地址时,值也一样相等。
---------------------刚好看到这,顺势把个人理解叙述一下,希望有用----------------

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40






