面试题汇总

Java中 == 和 equals 的区别是什么?

什么是==?
== 等于比较运算符,如果进行比较的两个操作数都是数值类型,即使他们的数据类型不相同,只要他们的值相等,也都将返回true.如果两个操作数都是引用类型,那么只有当两个引用变量的类型具有父子关系时才可以比较,而且这两个引用必须指向同一个对象,才会返回true.(在这里我们可以理解成==比较的是两个变量的内存地址)

什么是equals()?
equals()方法是Object类的方法,在Object类中的equals()方法体内实际上返回的就是使用==进行比较的结果.但是我们知道所有的类都继承Object,而且Object中的equals()方法没有使用final关键字修饰,那么当我们使用equal()方法进行比较的时候,我们需要关注的就是这个类有没有重写Object中的equals()方法.

区别
== 是java提供的等于比较运算符,用来比较两个变量指向的内存地址是否相同.而equals()是Object提供的一个方法.Object中equals()方法的默认实现就是返回两个对象==的比较结果.但是equals()可以被重写,所以我们在具体使用的时候需要关注equals()方法有没有被重写.

注意:int 和 Integer相关问题笔试题中可能出现

  public static void main(String[] args) {//-128 ~ +127 之间Integer a = 5;int b = 5;Integer c = new Integer(5);Integer d = 5;System.out.println(a.equals(b));//trueSystem.out.println(a == b);//trueSystem.out.println(a.equals(c));//trueSystem.out.println(a == c);//falseSystem.out.println(a == d);//true//-128 ~ +127 之外a = 128;b = 128;c = new Integer(128);d = 128;System.out.println(a.equals(b));//trueSystem.out.println(a == b);//trueSystem.out.println(a.equals(c));//trueSystem.out.println(a == c);//falseSystem.out.println(a == d);//false}
  • 赋值方式中如果调用了new关键字,一定会在内存中给你分配一个新的地址
  • 给Integer类型赋值的时候,如果没有调用new关键字,并且值在-128与+127之间,包括-128和+127,那么指向的都是同一个内存位置.
  • Integer类中重写了equals()方法,使用equals()方法进行比较的时候,实际上比较的内存中最终指向的值的内存位置,不是直接比较变量的内存位置.

Java中 == 和 equals 的区别是什么?相关推荐

  1. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

  2. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

  3. Java中的equals学习小结

    Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其 主要内容,而且要将 = =和 equals列为重要的对比概念来 ...

  4. Java中重写equals()方法时注意点

    Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...

  5. java中的equals()空对象的出错

    java中的equals()空对象的出错: String a = "abc"; //不是空对象boolean b = a.equals("abc"); //不会 ...

  6. java中equals函数所在的类,重写Java中的equals方法介绍

    Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...

  7. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  8. C#和Java中“==”和“equals”区别

    C#中"=="和"equals"区别如下: 1 using System; 2 class Program 3 { 4 public static void M ...

  9. Java中的equals(),==,compareTo()和compare()

    Java中的equals(),==,compareTo()和compare() 首先只有==可以用作两个基本类型数据之间的比较,当然是值比较.当用作两个对象比较时,比较的是对象引用,而不是值比较. 其 ...

最新文章

  1. Java线程:新特征-条件变量
  2. win10系统搭建Tensorflow深度学习平台详细步骤
  3. mysql 开发基础系列18 存储过程和函数(下)
  4. 一个程序员的成长的六个阶段(转载)
  5. 安装启动gui卡住_为什么Windows 10升级安装卡住了,原因在这
  6. win10管理凌乱桌面_用于管理凌乱的开源存储库的命令行技巧
  7. 两个空间点直接距离投影公式_HBAO(屏幕空间的环境光遮蔽)
  8. mqttnet 详解_MQTT协议详解
  9. Glib2: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)问题(六)
  10. pip 下载安装时使用清华大学镜像(各种国内源配置)
  11. 什么是前端以及前端的重要性
  12. 微信小程序实现每日签到功能
  13. 物业收费管理系统 java_基 于java的小区物业收费管理系统.doc
  14. JAVA最强工具类之一HuTool
  15. 最短路径(dijistra和floyd算法)
  16. 正则表达式限制输入框输入
  17. android 指纹验证api
  18. LoRa SX1278通信代码开发学习
  19. JavaScript中查找关键词
  20. 台式机开启WiFi热点 有线网络分享无线网络

热门文章

  1. 【原创】关于MATLAB中imagesc函数图像保存的问题
  2. WP7 初始屏幕设置
  3. js模拟实现Array的Map、Every、Some、Reduce、Find方法
  4. cookie工作流程
  5. Python_内置模块2
  6. HTML-HTML基本语法和标签
  7. 字符串表示形式—字符数组和字符指针的区别
  8. 懒人版黑苹果mbr安装_MBR和GPT的区别,选择适合自己的
  9. 基于顺序存储结构的图书信息表的修改(C++)
  10. 顺序循环队列的基本操作