java中equals方法与==的差别

 在java继承中的一个经典的应用就是:equals方法:
---equals与==的差别:
	==做关系运算符时:
	(1)这个运算符的两边.如果是基本数据类型.判断的是基本数据类型的值是否相等
	(2)如果是某个类型的对象,判断的是对象是否同一地址
		如果地址相同,内容一定相同
		如果地址不同,不一定内容不同
	equals方法不能判断基本数据类型的数据,只能判断对象是否相等
			如果没有重写equals,那么equals方法判断的是地址,因为这个equals方法继承自Object的equals方法,Object类中的equals判断的是地址,如果子类重写了方法,就看具体重写的方法;
			在java 的类库中String ,封装(double .integer,float ),判断instanceof 左边的对象是否与右边的对象同一类型

Student.java

public class Student {
private int age;
public Student(int age, String name, String stuNo) {
super();
this.age = age;
this.name = name;
this.stuNo = stuNo;
}
public int getAge() {
return age;
}
@Override
public boolean equals(Object obj) {
boolean flag=false;
if(objnull){
return flag;
}else if(this
obj){
return true;
}else{
//obj不空,且this跟obj地址不相同
//obj对象是否是Student类类型的对象
if(obj instanceof Student){
Student stu=(Student)obj;
if(this.name.equals(stu.getName())&&this.age==stu.getAge()&&this.stuNo.equals(stu.getStuNo())){
return true;
}

		}
	}
	return flag;
}
public void setAge(int age) {
	this.age = age;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getStuNo() {
	return stuNo;
}
public void setStuNo(String stuNo) {
	this.stuNo = stuNo;
}
private String name;
private String stuNo;

}

Demo1.java

public class Demo1 {
public static void main(String[] args) {
int i=3;
int j=3;
System.out.println(i==j);

	Student stu1=new Student(20,"zhansan","s001");
	Student stu2=new Student(20,"zhansan","s001");
	Student stu3=new Student(20,"zhansan","s001");
	System.out.println(stu1==stu2);
	System.out.println(stu1==stu3);
	if(stu1.equals(stu2)){
		//Object equals 判断的是地址
		System.out.println("=");
	}else{
		System.out.println("!=");
	}
	if(stu1.equals(stu2)){
		//Object equals 判断的是地址
		System.out.println("=");
	}else{
		System.out.println("!=");
	}
	
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值