==与equals

在Java中,== 和 equals() 是两种不同的比较方式,用于比较对象或基本数据类型,但它们在比较时的行为是不同的。

== 操作符:
        当用于比较基本数据类型(如 int, char, boolean 等)时,== 比较的是它们的值是否相等。
        当用于比较对象引用时,== 比较的是两个引用是否指向内存中的同一个对象实例。换句话说,它检查的是对象的身份(identity),而不是对象的内容或状态。


equals() 方法:
        equals() 是 Object 类中的一个方法,所有Java对象都继承了这个方法。它的默认实现实际上与 == 相同,即比较对象的引用。
        但是,很多类(尤其是那些需要比较对象内容的类)会重写 equals() 方法,以便根据对象的属性或状态来定义“相等性”。例如,String 类、Integer 类和自定义的类可能会重写 equals() 方法。
        当重写 equals() 方法时,必须满足一些基本规则,包括自反性、对称性、传递性、一致性和非空性(前面已提到)。

引用数据类型大致包括:类、 接口、 数组、 枚举、 注解、 字符串等

它和基本数据类型的最大区别就是:

基本数据类型是直接保存在栈中的
引用数据类型在栈中保存的是一个地址引用,这个地址指向的是其在堆内存中的实际位置。(栈中保存的是一个地址,而实际的内容是在堆中,通过地址去找它实际存放的位置)

 

 

String s1 = new String("hello");  
String s2 = new String("hello");  // 使用 == 操作符比较,结果是 false,因为 s1 和 s2 指向不同的对象实例  
System.out.println(s1 == s2); // 输出 false  // 使用 equals() 方法比较,结果是 true(假设 String 类已正确重写 equals()),  
// 因为 s1 和 s2 的内容相同  
System.out.println(s1.equals(s2)); // 输出 true  // 对于字符串字面量,Java 会使用字符串池来优化性能,  
// 因此下面的比较将返回 true,因为两个引用指向同一个字符串对象  
String s3 = "hello";  
String s4 = "hello";  
System.out.println(s3 == s4); // 输出 true

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

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

相关文章

前端学习生产环境、开发环境、测试环境

1、路径 定义是什么环境 NODE_ENVdevelopment 开发环境 2、.env 端口号 3、.env.development 开发环境 4、.env.production 生产环境 5、.env.test 测试环境 6、如何访问,通过process.env进行访问 学习中.......

简化java代码:mapstruct + 策略模式

目录 目的 准备 注意 相同类型-属性名不同 实体类 映射 使用 验证-查看实现类 测试 不同类型(策略模式) 实体类 映射 工具类 使用:对象拷贝 验证-查看实现类 测试 使用:集合拷贝 测试 策略模式说明 准备-依赖 目的 简化 BeanUtils.…

【RL】(task4)DDPG算法、TD3算法

note 文章目录 note一、DDPG算法二、TD3算法时间安排Reference 一、DDPG算法 DDPG(Deep Deterministic Policy Gradient)算法 DDPG算法是一种结合了深度学习和确定性策略梯度的算法。它主要解决的是在连续动作空间中,智能体(age…

Axios取消请求:AbortController

AbortController AbortController() 构造函数创建了一个新的 AbortController 实例。MDN官网给出了一个利用AbortController取消下载视频的例子。 核心逻辑是:利用AbortController接口的只读属性signal标记fetch请求;然后在需要取消请求的时候&#xff0…

python算法与数据结构---单调栈与实践

单调栈 单调栈是一个栈,里面的元素的大小按照它们所在栈的位置,满足一定的单调性; 性质: 单调递减栈能找到左边第一个比当前元素大的元素;单调递增栈能找到左边第一个比当前元素小的元素; 应用场景 一般用…

Ubuntu22.04安装4090显卡驱动

1、安装完Ubuntu系统,打完所有补丁后再进行后续操作 2、下载系统所需要的版本的NV显卡驱动,本次由于使用CUDA12.1,故选用的驱动版本为NVIDIA-Linux-x86_64-530.41.03.run 3、卸载NV驱动(只是保险起见,并不是一定会卸…

微信小程序登录获取手机号教程(超详细)

1. 背景介绍: 在我们开发微信小程序时,登录时,需要获取用户手机号作为唯一标识,下面我介绍一下获取手机号的教程。 本篇文章介绍后端获取方法: 前端工作 后端工作 前端 新建Page页面,在xxx.wxml中加入…

Shell脚本④循环语句for、while、until

目录 一.for 1. 九九乘法表 2.求1到10奇数和 3.累计加到100 (1)方法一 (2)方法2 二.while 1.猜价格小游戏 2.累加到100的方法三 三.until循环 1.累加到100方法四 四.嵌套循环 五.循环语句中break、exit和continue 1…

如何把标书制作精美

标书,作为一种正式的文件,其制作需要我们花费心思。精美、专业的标书不仅能准确传达信息,还能给阅读者留下深刻印象。那么,如何才能制作出精美的标书呢?接下来,我会从五个方面为您详细解析。 一、内容至上 …

RabbitMQ简单模式和工作模式

RabbitMQ 是一个消息队列中间件,用于在分布式系统中进行消息传递。在 RabbitMQ 中,有几种工作模式,其中简单模式和工作模式是其中两种基本的模式之一。 简单模式(Simple Mode): 在简单模式中,有…

前端 - 视觉呈现技术

前言 不知道大家有没有在微信中看见过,那种特别炫酷的h5,从事前端工作的伙伴看着这么炫酷的效果,又不知如何实现。本文就带你走进前端高阶视觉特效。 特效 视觉呈现做的最熟的,我觉得应是视频了,每个视频工具都能根…

使用封装函数判断素数

#include<stdio.h> int judgeprime(int n) //判断是不是素数 { int i 0; int j 1; //默认素数&#xff0c;判断之后若不是素数&#xff0c;返回j0&#xff0c;否则返回j1 for (i 2; i < n; i) {if (n%i 0) //有其他共因数&#xff0c;不为素数{j 0;break;} }…

26.删除排序数组中的重复项(力扣LeetCode)

26.删除排序数组中的重复项 题目描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nu…

v-if 导致 elementui 表单校验失效问题解决

问题 在使用 elementui 表单的过程中&#xff0c;某些表单项需要通过 v-if 来判断是否展示&#xff0c;但是这些表单项出现了检验失效的问题。 解决方法 1、给需要 v-if 判断的表单项添加 key 值 <el-form ref"form" :model"form"><el-form-i…

【Unity学习笔记】创建人物控制器

人物左右移动 1 导入模型&#xff0c;如果没有模型&#xff0c;则在 窗口-资产商店-free sample 找到人物模型 2 在 窗口-包管理中 导入自己的模型 3 在自己的资产文件夹中找到Prefabs Base HighQuality MaleFree1模型&#xff0c;导入到场景中 4 Assets中创建C#项目 写入如下…

四、MySQL之DML DQL

有关数据表的DML操作 INSERT 针对于数据的插入DELETE 针对于数据的删除UPDATE 针对于数据的修改 4.1 INSERT语句 INSERT INTO 表名 [(列名1,列名2,....)] VALUES (值1&#xff0c;值2&#xff0c;...); 默认情况下&#xff0c;一条插入命令只针对一行进行影响INSERT INTO 表…

Leetcode:二分搜索树层次遍历

题目&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例&#xff1a; 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,…

使用阿里云的oss对象存储服务实现图片上传(前端vue后端java详解)

一&#xff1a;前期准备&#xff1a; 1.1&#xff1a;注册阿里云账号&#xff0c;开启对象存储oss功能&#xff0c;创建一个bucket&#xff08;百度教程多的是&#xff0c;跟着创建一个就行&#xff0c;创建时注意存储类型是标准存储&#xff0c;读写权限是公共读&#xff09;…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(24)-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇

1.简介 在开发或者测试的过程中&#xff0c;由于项目环境比较多&#xff0c;往往需要来来回回地反复切换&#xff0c;那么如何优雅地切换呢&#xff1f;宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考。 2.实际工作场景 2.1问题场景 &#xff08;1&#xff09;已发布线上…

YOLOv8改进 | Conv篇 | 利用DualConv二次创新C2f提出一种轻量化结构(轻量化创新)

一、本文介绍 本文给大家带来的改进机制是利用DualConv改进C2f提出一种轻量化的C2f,DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合33和11的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积…