据说这个面试题目,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. POJ1988(带权并查集,搬砖块)

    题意:        可以这样理解,有n快方形积木,一开始都是单独的放到哪,然后有两种操作 1 M a b 把a所在的那一堆落到b所在那一堆的上面(一开始自己是一堆) 2 C a 问a下面有多少个积木 ...

  2. C#-获取磁盘,cpu,内存信息

    获取磁盘信息 zongdaxiao = GetHardDiskSpace("C") * 1.0 / 1024; user = GetHardDiskFreeSpace(" ...

  3. Docker阿里云镜像存储服务

    阿里云镜像服务地址 https://cr.console.aliyun.com/cn-beijing/instances/repositories   免费免费免费 登陆之后可以免费创建,仓库.地址大 ...

  4. MySQL|一文解决主库已有数据的主从复制

    主从复制配置方案和实际的场景有很多,在之前配置了主从库都是全新的配置方案 在这一篇会配置主库存在数据,然后配置主从复制 开始之前,先分享一套MySQL教程,小白入门或者学习巩固都可以看 MySQL基础 ...

  5. 记一次 .NET 某旅行社Web站 CPU爆高分析

    一:背景 1. 讲故事 前几天有位朋友wx求助,它的程序内存经常飙升,cpu 偶尔飙升,没找到原因,希望帮忙看一下. 可惜发过来的 dump 只有区区2G,能在这里面找到内存泄漏那真有两把刷子..., ...

  6. 推荐系统论文之序列推荐:KERL

    KERL: A Knowledge-Guided Reinforcement Learning Modelfor Sequential Recommendation 摘要 ‍时序推荐是基于用户的顺序行 ...

  7. J2SE基础题

    J2SE基础 八种基本数据类型的大小,以及他们的封装类.(有的也说是9中基本数据类型,包括了void) 基本类型 大小(字节) 默认值 封装类 byte 1 (byte)0 Byte short 2 ...

  8. CSS3过渡应用

    小米图标转换 transition:需要过渡的属性 花费时间 (运动曲线 何时开始): Tips: 1.第二个属性值必须跟上单位(s) 2.谁要过渡给谁加 图标转换最终效果:当鼠标划过图标时,缓慢转换 ...

  9. CRM帮助B2B企业持续改善战略决策「上篇」

    数据一直都是企业和客户的热点话题.客户期望得到更加个性化的感受,企业则期望使用数据来持续改善战略决策和给予更好的服务 B2B企业如何更合理地利用客户资料: 数据采集 长期以来,B2C行业的企业都是通过 ...

  10. [刷题] PTA 03-树3 Tree Traversals Again

    用栈实现树遍历 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXSIZE 30 4 5 int Pre[MAXSIZ ...