Java面试题:==运算符与equals方法的区别
据说这个面试题目,80%的程序员都会理直气壮的回答错误!!
一: ==运算符
- 如果比较的是基本数据类型,则直接比较数值是否相等,返回值为“true or false”
 - 如果比较的是引用数据类型,则直接比较地址值是否相等,返回值为“true or false”
 
二: Object类中的equals()方法:
- Object类中的equals方法比较的是引用数据类型,比较的的是地址值是否相等,“返回true or false”
 - 如果子类有重写了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方法的区别的更多相关文章
- Java面试题之“==”和“equals()”方法的区别?
		
一.“== ”:运算符 1.可以使用在基本数据类型变量和引用数据类型变量中. 2.如果比较的是基本数据类型变量:比较的是两个变量保存的数据是否相等.(不一定类型要相同) 3.如果比较的是引用数据类型变 ...
 - ==运算符和equals()方法的区别
		
Java语言程序中判断两个变量是否相等有两种方式:一是运用==运算符,二是运用equals方法. 1. ==运算符 对于==运算符来说,如果两个变量是基本类型的,并且是数值类型,则只要它们的值相等,就 ...
 - Java 基本数据类型 及 == 与 equals 方法的区别
		
Java数据类型分为基本数据类型与引用数据类型. 1 基本数据类型 byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0 short:短整型,2个字 ...
 - Java基础之"=="和 和 equals  方法的区别
		
一."=="操作符 ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作 ...
 - [java] 更好的书写equals方法-汇率换算器的实现(4)
		
[java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]> [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...
 - 关于java中的hashcode和equals方法原理
		
关于java中的hashcode和equals方法原理 1.介绍 java编程思想和很多资料都会对自定义javabean要求必须重写hashcode和equals方法,但并没有清晰给出为何重写此两个方 ...
 - ==和equals()方法的区别
		
==和equals()方法的区别 这是一道经典的面试题,但是很多人对其一直很困惑,最近刚好复习了他们两者的区别,现总结如下: 一.==:两端可以存放不同的数据 1.放基本数据类型:根据基本数据 ...
 - equals()方法 与 == 区别
		
equals()方法 与 == 区别 : equals():在字符串中比较内容,则必须使用equals(变量),如果相等则为true,否则为false == :使用==比较的是地址是否一致 class ...
 - 一、基础篇--1.1Java基础-hashCode和equals方法的区别和联系
		
hashCode和equals方法的区别和联系 两个方法的定义 equals(Object obj)方法用来判断两个对象是否"相同",如果"相同"则返回tr ...
 
随机推荐
- Python中Scapy网络嗅探模块的使用
			
目录 Scapy scapy的安装和使用 发包 发包和收包 抓包 将抓取到的数据包保存 查看抓取到的数据包 格式化输出 过滤抓包 Scapy scapy是python中一个可用于网络嗅探的非常强大的第 ...
 - WIN64内核编程-的基础知识
			
WIN64内核编程基础班(作者:胡文亮) https://www.dbgpro.com/x64driver 我们先从一份"简历"说起: 姓名:X86或80x86 性别:? 出生 ...
 - nodejs-函数&路由
			
函数------------------------------------------------------------ 基本函数 function say(word) { console.log ...
 - 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
			
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
 - JavaWeb——JDBC连接池&JDBCTemplate
			
今日内容 1. 数据库连接池 2. Spring JDBC : JDBC Template 数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容 ...
 - 常用的 TCP KeepAlive 参数
			
转自:http://dola.xinfan.org/?p=359 我们知道 TCP 协议有检测连接状态的机制,当连接不活跃的时候,连接双方会通过一定的算法检测连接是否正常.这个机制就是 TCP 的 K ...
 - Docker镜像讲解
			
Docker镜像讲解 镜像是什么 镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件做需要的所有的内容,包括代码,运行时,库,环境变量和配置文件. ...
 - 如何理解PaaS平台,与SaaS、IaaS有什么区别?
			
我们经常会看到SaaS.PaaS.IaaS,但总是会摸不着头脑,有的人甚至会以为是恐怖组织的代号.其实,无论是SaaS.PaaS还是IaaS,都代表的是某一种服务,比如SaaS的含义为"软件 ...
 - Spring context的refresh函数执行过程分析
			
今天看了一下Spring Boot的run函数运行过程,发现它调用了Context中的refresh函数.所以先分析一下Spring context的refresh过程,然后再分析Spring boo ...
 - js EventSource 长链接
			
有这么一个场景:服务端处理数据,响应比较慢,为了不让用户体会到网页没有反应,服务端需要把处理的每一步操作返回给前端,前端实时进行打印. 1.ajax 轮询 <script> setInte ...