首页 > 编程语言 > 详细

Java面试题:==运算符与equals方法的区别

时间:2021-01-04 11:48:36      阅读:19      评论:0      收藏:0      [点我收藏+]

据说这个面试题目,80%的程序员都会理直气壮的回答错误!!

一: ==运算符

  1. 如果比较的是基本数据类型,则直接比较数值是否相等,返回值为“true or false”
  2. 如果比较的是引用数据类型,则直接比较地址值是否相等,返回值为“true or false”

二: Object类中的equals()方法:

  1. Object类中的equals方法比较的是引用数据类型,比较的的是地址值是否相等,“返回true or false”
  2. 如果子类有重写了equals方法,例如String类型,则直接比较类中的属性,返回"true or false"

三:==运算符运用举例:

public class Comparea {
	public static void main(String[] args) {
		int i1=10;
		int j1=10;
		System.out.println(i1==j1);//==运算符的比较使用
		int i=10;
		char a=10;
		System.out.println(i==a);//char类型已经转换成了相应的ASCII码值,所以输出true
		A1 a1=new A1(2,"男");
		A1 a12=new A1(2,"男");
	   System.out.println(a1==a12);//==比较的是地址值,与根父类Object一样
	
	}
}
class A1{
	 private int age;
	 private String  name;
	A1(int age,String name){
		this.age=age;
		this.name=name;
	}
	
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
true
true
false
  • 1
  • 2
  • 3

四:子类重写Object类中的equals()方法运用举例

public class Comparea {
	public static void main(String[] args) {
		A1 a1=new A1(2,"男");
		A1 a12=new A1(2,"男");
		System.out.println(a1==a12);//==比较的是地址值,与根父类Object一样
		System.out.println(a1.equals(a12));//此时的equals方法子类已经重写了,只比较类中的属性
		
	}
}
class A1{
	 private int age;
	 private String  name;
	A1(int age,String name){
		this.age=age;
		this.name=name;
	}
	
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public boolean equals(Object obj) {//向上转型,把子类的对象赋给父类的引用,通过父类的引用调用,子类重写了的父类中的方法
		if(this==obj) {//this关键字就是表示当前类的对象
			return true;
		}
		if(obj instanceof A1) {//obj instanceof A:关键字的作用就是判断 
			//obj 是否是A1这个类的对象,或者其子类的对象
			
			A1 a1=(A1)obj;//再通过向下转型,去调用A1类中的方法
			return this.age==a1.age&&this.name.equals(a1.name);
		}return false;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
false
true
原文章:https://blog.csdn.net/weixin_46351306/article/details/112059830

Java面试题:==运算符与equals方法的区别

原文:https://www.cnblogs.com/tfil/p/14228288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!