【面试题-002】Java 中,`==` 和 `equals()`区别

在 Java 中,==equals() 是两种常用的比较操作,但它们用于不同的目的:

  1. == 操作符:
    • == 用于比较两个对象的引用是否相同,即它们是否指向内存中的同一个对象。
    • 对于基本数据类型(如 int、float、char 等),== 比较的是它们的值是否相等。
    • 对于引用数据类型(如对象、数组等),== 比较的是两个引用是否指向同一个对象。
  2. equals() 方法:
    • equals() 是 Object 类的一个方法,可以被继承和重写。默认的实现是和 == 一样的,即比较两个对象的引用是否相同。
    • 在许多 Java 类库中,equals() 方法被重写为比较两个对象的状态是否相等,而不是它们的引用。例如,在 String 类中,equals() 比较的是两个字符串的内容是否相同,而不是它们是否是同一个字符串对象。
    • 要正确地使用 equals() 方法,需要遵循几个基本原则:
      • 自反性:对于任何非 null 的引用值 x,x.equals(x) 应该返回 true。
      • 对称性:对于任何非 null 的引用值 x 和 y,如果 x.equals(y) 返回 true,那么 y.equals(x) 也应该返回 true。
      • 传递性:对于任何非 null 的引用值 x、y 和 z,如果 x.equals(y)y.equals(z) 都返回 true,那么 x.equals(z) 也应该返回 true。
      • 一致性:对于任何非 null 的引用值 x 和 y,多次调用 x.equals(y) 应该一致地返回 true 或 false,前提是对象上比较的信息没有被修改。
      • 非空性:对于任何非 null 的引用值 x,x.equals(null) 应该返回 false。
        总结来说,如果你想比较两个对象是否在逻辑上等价(即它们的内容或状态是否相同),应该使用 equals() 方法。如果你想比较两个对象是否实际上是同一个对象(即它们的引用是否相同),应该使用 == 操作符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1130. 【二维数组】打印螺旋矩阵

题目描述 打印n行的以下图形,n由键盘输入,例如n5时: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 输入 输入n,表示n行 输出 输出符合规律的n行矩阵 样例输入 复制 5 样例输…

android使用通知和快捷方式

1.权限 android 13版本 将通知改为运行时权限,需要向用户动态申请权限。 // 权限请求implementation com.guolindev.permissionx:permissionx:1.7.1 2.通知工具类 通知了解:官网 import android.app.NotificationChannel import android.app.Notifi…

Flutter基础 -- Flutter基础特性

目录 1. 一切都是 widget 1.1 UI 组件!!! 1.2 架构设计 1.3 sdk 源码目录 1.4 widget 分类!!! 参考文献 2. devTools 调试工具 2.1 启动调试器 2.2 布局面板 参考文献 3. 布局约束规则 3.1 让子…

亲,你有多久没有清理过你电脑的 DNS 缓存了?

最近明月因为工作关系更换了几次使用的电脑,期间就发现明明另一台电脑访问某个网址是正常,换一台电脑后就会出现无法访问的现象,并且用的还是同一个宽带网络,实在是太诡异了!后来还是突然想起来 DNS 缓存这个问题,立马清除了那台电脑的 DNS 缓存后,打不开的网址顺利的呈…

银河麒麟V10 sp1使用pyautogui进行屏幕截图报错

** Message: 13:47:21.044: Unable to use GNOME Shells builtin screenshot interface, resorting to fallback X11. screenshot pyautogui.screenshot() screenshot.save(file_name) 使用以上代码在Ubuntu22.04操作系统上进行截屏没有任何问题(桌面环境GNOME&am…

FPGA PCIe PIO代码的学习

目录 背景 应用场景 代码架构分析 结论 背景 本项目是基于xinlinx官方的PCIe IP 7 series integrated block for PCI Express。根据官方的例程加上官方给的example,对代码进行分析。 应用场景 对一些速率要求不高的,比如IO操作,推荐使用…

对新手友好的最简单方便的本地项目关联git远程仓库教程

对新手友好的最简单方便的本地项目关联git远程仓库教程 前置条件1.本地项目2.gitee上创建同名项目 关联操作1.在本地进行clone远程仓库操作2.把本地项目下的目录和文件都复制到这个克隆自git的项目文件夹里面3.查看文件状态和提交文件 在我们创建项目时,一般都是在本…

ubuntu编译打包的时候不想要linux-image-unsigned-xxxx.deb

ubuntu内核源码编译的时候呢打包总是打成 linux-image-unsigned-xxxx.deb 不想要linux-image-unsigned-xxxx.deb 想要linux-image-xxxx.deb 修改 control-create #!/bin/bash. debian/debian.envvars=$1 any_signed=$2. $vars[ "$provides" != ] && pro…

QAnything-1.4.01.4.1版本更新!使用指北!

久等了各位!时隔一个多月,我们在4月26日和5月20日接连发布了v1.4.0和v1.4.1两个版本,带来了问答性能,解析效果等多方面的改进,并新增了大量的新功能和新特性 详见:releases 以及 使用说明 最新特性表 开发…

13-至少有5名直接下属的经理(高频 SQL 50 题基础版)

13-至少有5名直接下属的经理 select name from Employee where id in (select managerId -- 查找大于5的经理idfrom Employeegroup by managerId -- 根据id分组having count(*)>5); -- 根据分组的数据进行求个数

java连接MySQL数据库

环境准备 JDK安装 Navicat MySQL安装 下载jar包 MySQL :: Download MySQL Connector/J (Archived Versions) 创建数据库 1. 打开Navicat 2. 新建数据库 3. 定义数据库名 4. 新建查询 运行如下代码创建表log CREATE TABLE log (user VARCHAR(255) NOT NULL UNIQUE,pwd …

mysql8 .net sqlsuger 批量插入dbScope.Fastest<T>().PageSize(2000).BulkCopy(T)>

连接mysql时出现 MySqlConnector.MySqlException (0x80004005): Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation 需要再数据库开启权限 grant SUPER,SYSTEM_VARIABLES_ADMIN on *.* to rootUser;flush pri…

Python数据框操作 -- 提取数据

创建一个数据框 import pandas as pd df pd.DataFrame({a:[2,2,3,4,5], b:[6,7,8,8,9]}) #创建一个数据框 提取某列 df.a # df的a这一列 df[a] # df的a这一列 df.iloc[:,0] # df的所有行,第0列(依然是a列) 提取某几列 df[[a,b]] #…

未见过类型题每周总结(个人向)

1.DP40 小红取数 题目 解析 一道01背包的衍生问题,我们可以按照它的思路定义数组dp[i][j],表示前i个数中%k为j的最大和。为什么设置未%k的最大和呢?是因为当两个数分别%k,如a%kx,b%ky。那么(ab)%k&#…

C++基础与深度解析 | 类进阶 | 运算符重载 | 类的继承 | 虚函数

文章目录 一、运算符重载二、类的继承1.类的继承2.虚函数 一、运算符重载 在C中,operator关键字用于重载运算符,使得类的实例可以使用内置的操作符(如、-、*、/等)进行操作。 运算符重载的特性: 重载不能发明新的运算…

通信协议:常见的芯片间通信协议

相关阅读 通信协议https://blog.csdn.net/weixin_45791458/category_12452508.html?spm1001.2014.3001.5482 本文将简单介绍一些常见的芯片间通信协议,但不会涉及到协议的具体细节。首先说明,芯片间通信方式根据通信时钟的区别可以分为:异步…

上位机图像处理和嵌入式模块部署(f407 mcu中的网络开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 和大家想的不太一样,只要mcu当中带有了mac ip,那么就意味着mcu本身支持了网络开发。但是如果需要mcu支持完整的tcp/ip&…

Java面试题:ArrayList底层实现原理、HashMap的实现原理、HashMap的jdk1.7和jdk1.8有什么区别

文章目录 一、List相关面试题1.1 ArrayList源码分析(底层实现)1.2 ArrayList底层的实现原理是什么1.3 ArrayList listnew ArrayList(10)中的list扩容几次1.4 如何实现数组和List之间的转换1.5 ArrayList 和 LinkedList 的区别是什么 二、HashMap相关面试…

如何在 Vue 组件中正确地使用 data 函数?

在 Vue 组件中正确使用 data 函数有以下几点需要注意: 返回一个对象: data 函数必须返回一个对象,这个对象包含了组件实例需要用到的所有数据属性。export default {data() {return {message: Hello, Vue!,count: 0}} }不要使用箭头函数: data 函数不应该使用箭头函数 () >…

《最游记》游戏全套源码(源码+引擎+文档+客户端+服务端+工具)

《最游记》首款西游降魔修仙网游—还原《西游记》小说经典,华丽场景,玄幻体验;七十二变,机甲配备;仙兵神器,灵兽助阵;降妖除魔,最游天下!源码基于 vs 2005,可…