据说这个面试题目,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方法的区别的更多相关文章

  1. Java面试题之“==”和“equals()”方法的区别?

    一.“== ”:运算符 1.可以使用在基本数据类型变量和引用数据类型变量中. 2.如果比较的是基本数据类型变量:比较的是两个变量保存的数据是否相等.(不一定类型要相同) 3.如果比较的是引用数据类型变 ...

  2. ==运算符和equals()方法的区别

    Java语言程序中判断两个变量是否相等有两种方式:一是运用==运算符,二是运用equals方法. 1. ==运算符 对于==运算符来说,如果两个变量是基本类型的,并且是数值类型,则只要它们的值相等,就 ...

  3. Java 基本数据类型 及 == 与 equals 方法的区别

    Java数据类型分为基本数据类型与引用数据类型. 1 基本数据类型 byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0 short:短整型,2个字 ...

  4. Java基础之"=="和 和 equals 方法的区别

    一."=="操作符 ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作 ...

  5. [java] 更好的书写equals方法-汇率换算器的实现(4)

    [java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]>   [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...

  6. 关于java中的hashcode和equals方法原理

    关于java中的hashcode和equals方法原理 1.介绍 java编程思想和很多资料都会对自定义javabean要求必须重写hashcode和equals方法,但并没有清晰给出为何重写此两个方 ...

  7. ==和equals()方法的区别

    ==和equals()方法的区别 这是一道经典的面试题,但是很多人对其一直很困惑,最近刚好复习了他们两者的区别,现总结如下: 一.==:两端可以存放不同的数据     1.放基本数据类型:根据基本数据 ...

  8. equals()方法 与 == 区别

    equals()方法 与 == 区别 : equals():在字符串中比较内容,则必须使用equals(变量),如果相等则为true,否则为false == :使用==比较的是地址是否一致 class ...

  9. 一、基础篇--1.1Java基础-hashCode和equals方法的区别和联系

     hashCode和equals方法的区别和联系  两个方法的定义 equals(Object obj)方法用来判断两个对象是否"相同",如果"相同"则返回tr ...

随机推荐

  1. hdu1828 线段树扫描线求矩形面积的周长

    题意:       给你n个矩形,问你这n个矩形所围成的图形的周长是多少. 思路:       线段树的扫描线简单应用,这个题目我用的方法比较笨,就是扫描两次,上下扫描,求出多边形的上下边长和,然后同 ...

  2. 关于YiII框架的扩展memcache中set设置时间就get查询失效的解决方案(版本是1.1.20)

    0x01 前言 在使用Yii框架的扩展memcache缓存的时候,存储数据有一个set方法,来看一下set方法的原型: public boolean set(string $id, mixed $va ...

  3. php 实现图片下载,文件下载

    1.控制器public function downPic(){ $filename = input('file','','string'); //文件所在路径 // 检查文件是否存在 if (! fi ...

  4. 一句 Task.Result 就死锁, 这代码还怎么写?

    一:背景 1. 讲故事 前些天把 .NET 高级调试 方面的文章索引到 github 的过程中,发现了一个有意思的评论,详见 文章,截图如下: 大概就是说在 Winform 的主线程下执行 Task. ...

  5. 对标印度的PostMan,一款中国接口测试软件的崛起

    对于我们开发者,Api接口调试一定不陌生.包括我在内,之前进行Api调试时,一直使用的是一款印度的软件Postman.记得刚入手的时候,由于该款软件缺乏中文版本,上手一直比较慢,而且还至少存在如下几个 ...

  6. .NET Core 中依赖注入框架详解 Autofac

    本文将通过演示一个Console应用程序和一个ASP.NET Core Web应用程序来说明依赖注入框架Autofac是如何使用的 Autofac相比.NET Core原生的注入方式提供了强大的功能, ...

  7. 【近取 Key】Alpha - v1.0 测试报告

    Bug 前端 主页.登录.注册.导航 bug说明 修复方法 修复结果 导航栏有时不显示用户姓名 修改用户信息的获取逻辑与存储方式 成功 展示词图界面导航栏居右失败 在组件中增加自适应相关设置 成功 用 ...

  8. 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. ...

  9. Centos7.4永久修改系统时间

    [root@V3B01-zsy yum.repos.d]# date -s "2019-09-24 17:02:30" 2019年 09月 24日 星期二 17:02:30 CST ...

  10. web技术开发桌面应用

    三款前端工程师桌面应用开发神器! http://mini.eastday.com/a/160630023107669-2.html 如果我告诉你,以后你们可以用前端语言(html5+css3+js)开 ...