==操作符与equals方法
Posted youayou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了==操作符与equals方法相关的知识,希望对你有一定的参考价值。
==:符号两边数据类型必须兼容(一边数据类型能转成另一边数据类型)
1.比较基本数据类型:比较两个变量值是否相等
2.比较引用数据类型:比较是否指向同一数据对象
equals:只能比较引用类型
1.比较一般引用类型:作用与“==”相同,比较是否指向同一对象
2.比较特殊引用类型:File、String、Date和包装类,比较的是内容是否相同,而不考虑是否引用的同一对象
(原因:在这些类中,重写了Object类的equals方法)
重写Object类的equals()方法示例:
public class Student { private String name; private int age; /** * 构造器(构造函数) * @param name * @param age */ public Student(String name,int age) { this.name=name; this.age=age; } /** * 重写equals() * 1.判断传进来的对象是否为该类的一个实例,如是,就类型强制转换 * (原因:不判断,就不能使用该类成员变量) * 2.用==和equal比较成员变量 */ @Override public boolean equals(Object obj) { boolean flag=false; if(obj instanceof Student) { Student s=(Student)obj; if(this.age==s.age && this.name.equals(s.name)) { flag=true; } } return flag; } }
测试:
public class Test { /** * 重写equals()测试 * @param args */ public static void main(String[] args) { Student s1=new Student("学生1",11); Student s2=new Student("学生1",11); Student s3=new Student("学生2",11); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); } } 输出结果: true false
以上是关于==操作符与equals方法的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段