码迷,mamicode.com
首页 > 其他好文 > 详细

==操作符与equals方法

时间:2019-10-15 11:35:48      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:相等   不能   测试   div   lse   一个   instance   原因   引用类型   

==:符号两边数据类型必须兼容(一边数据类型能转成另一边数据类型)

  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方法

标签:相等   不能   测试   div   lse   一个   instance   原因   引用类型   

原文地址:https://www.cnblogs.com/youayou/p/11676503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!