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 ...
随机推荐
- hdu1828 线段树扫描线求矩形面积的周长
题意: 给你n个矩形,问你这n个矩形所围成的图形的周长是多少. 思路: 线段树的扫描线简单应用,这个题目我用的方法比较笨,就是扫描两次,上下扫描,求出多边形的上下边长和,然后同 ...
- 关于YiII框架的扩展memcache中set设置时间就get查询失效的解决方案(版本是1.1.20)
0x01 前言 在使用Yii框架的扩展memcache缓存的时候,存储数据有一个set方法,来看一下set方法的原型: public boolean set(string $id, mixed $va ...
- php 实现图片下载,文件下载
1.控制器public function downPic(){ $filename = input('file','','string'); //文件所在路径 // 检查文件是否存在 if (! fi ...
- 一句 Task.Result 就死锁, 这代码还怎么写?
一:背景 1. 讲故事 前些天把 .NET 高级调试 方面的文章索引到 github 的过程中,发现了一个有意思的评论,详见 文章,截图如下: 大概就是说在 Winform 的主线程下执行 Task. ...
- 对标印度的PostMan,一款中国接口测试软件的崛起
对于我们开发者,Api接口调试一定不陌生.包括我在内,之前进行Api调试时,一直使用的是一款印度的软件Postman.记得刚入手的时候,由于该款软件缺乏中文版本,上手一直比较慢,而且还至少存在如下几个 ...
- .NET Core 中依赖注入框架详解 Autofac
本文将通过演示一个Console应用程序和一个ASP.NET Core Web应用程序来说明依赖注入框架Autofac是如何使用的 Autofac相比.NET Core原生的注入方式提供了强大的功能, ...
- 【近取 Key】Alpha - v1.0 测试报告
Bug 前端 主页.登录.注册.导航 bug说明 修复方法 修复结果 导航栏有时不显示用户姓名 修改用户信息的获取逻辑与存储方式 成功 展示词图界面导航栏居右失败 在组件中增加自适应相关设置 成功 用 ...
- S7 Linux用户管理及用户信息查询命令
7.1 useradd:创建用户 7.2-5 usermod 7.6 passwd:修改用户密码 7.7-9 chage.chpasswd.su 7.10-11 visudo.sudo 7.12-7. ...
- Centos7.4永久修改系统时间
[root@V3B01-zsy yum.repos.d]# date -s "2019-09-24 17:02:30" 2019年 09月 24日 星期二 17:02:30 CST ...
- web技术开发桌面应用
三款前端工程师桌面应用开发神器! http://mini.eastday.com/a/160630023107669-2.html 如果我告诉你,以后你们可以用前端语言(html5+css3+js)开 ...