一、 == 是一个运算符,比较的是数据的关系,可以比较任意数据类型的数据
基本数据类型:
equals属于哪个类。 比较就是数据本身的大小关系
引用数据类型 :
比较的是对象的地址值是否一致【Object的equals方法底层采用的 == 比较】
new和malloc的区别?二、 equals是一个方法,需要对象来调用,只能比较引用数据类型的数据
重写equals方法:
比较的是两个对象的属性值【所有的属性值】是否一致
java中==与equals的区别及理解。 没有重写equals方法:
和 == 是一样的比较的是地址值是否一致
代码示例
public class EqualsDemo {private String name;private int age;//有参构造public EqualsDemo(String name, int age) {super();this.name = name;this.age = age;}//无参构造public EqualsDemo() {super();}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//重写hashCode()方法@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}//重写equals()方法@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;EqualsDemo other = (EqualsDemo) obj;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}
}测试类:
public class TestEqualsDemo {public static void main(String[] args) {//创建对象EqualsDemo equalsDemo1 = new EqualsDemo("张三",20);EqualsDemo equalsDemo2 = new EqualsDemo("张三",20);// == 比较引用数据类型的时候,比较的的是地址值System.out.println(equalsDemo1 == equalsDemo2); //false// == 比较基本数据类型的时候,比较的是属性值System.out.println(equalsDemo1.getName() == equalsDemo2.getName()); //trueSystem.out.println(equalsDemo1.getAge() == equalsDemo2.getAge()); //trueSystem.out.println("================");//重写后的equals()方法比较的是属性值是否一致System.out.println(equalsDemo1.equals(equalsDemo2)); //返会true,未重写equals()方法时返回false}
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态