equals 和 == 的区别 你学会了吗?

STM32与K210串口通信 这篇文章是为了填上一篇埋下的坑,k210和STM32通过串口通信,我是采用数据包的形式发送数据的,因为K210发送的数据有几种,采用数据包的形式发送比较安全。本文代码运行的平台是STM32F103C8T6和K210 Dock,只涉及到K210发送数据给STM32,stm32将接受到的数据显示到0.96寸OLED屏上。 阅读详情

equals 和 == 的区别

1. == 的作用
  1. == 的作用: 对内容或值进行比较(用于基本类型或者引用类型之间的比较)
  2. 基本类型比较值是否相同; 引用类型比较指向的地址是否相同(java中唯一使用真实地址的操作)
  3. 格式: A == B
2. equals作用
  1. 作用: 对象比较(先比较两个对象的类型,再对对象中属性值比较)
  2. 在实际使用中,一般会重写定义的class的equals方法
  3. 特点
    • 只能用于引用类型
    • 容易产生空指针异常
    • equals相同,hashCode一定相同
    • hashCode相同,equals不一定相同
      例如: a存储了一个对象的地址,b == null,a和b分别对equals进行调用
      a.equals(b) = false
      b.equals(a) 空指针异常
3. equals的重写
  1. 在Object类中定义了equals方法;
public boolean equals(Object obj){
    return (this == obj);
}
  1. 这种比较对象内存地址值意义不大,所以在一些实际的类库中,这个方法被重写了,如String,Data类。
  2. 比如 String 中重写的equals方法:
public boolean equals(Object anObject){
    if(this == anObject) return true;
    if(anObject instanceof String){
        String anotherString = (String)anObject;
        int n = value.length;
        if(n == anotherString.value.length){
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while(n-- != 0){
                if(v1[i] != v2[i]) return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
4. 例子
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //true 可以看出str1和str2指向同一个对象

String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1==str2); //false 用new是生成不同的对象,new一次,生成一个

5. java中的堆和栈
  1. 堆和栈都是java用来在RAM中存放数据的地方,java自动管理栈和堆,程序员不能直接设置
  2. java的堆是一个运行时的数据区,类的对象从中分配空间。这些对象通过new,newarray等建立。
int a = 3;
int b = 3;
编译器先处理int a = 3; 首先在栈中创建一个变量为的引用,然后查找栈中是否有 3 这个值,如果没找到,就将3存进了,把a指向3;
接着处理int b = 3; 因为栈中已经有3了,所以直接把b指向3。
这时如果有 int a = 4, 那么编译器就会重新搜索栈,如果没有4,就把4存进了,把a指向4,因此a的值不影响b的值

对于String
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //true 可以看出str1和str2指向同一个对象

String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1==str2);  //false
同理,String str1 = "abc"; String str2 = "abc"; 在内存中只存在一个对象而已,有利于节省内存空间,在一定程度上提高运行速度,因为JVM会自动根据栈中的实际情况来决定是否有必要创建新对象。
而 String str1 = new String("abc"); 是在堆中创建对象,不管字符串是否相等,加重程序负担
由于 String类的immutable性质,当String变量需要经常更换值时,应该考虑使用StringBuffer类,以提高效率
【回归预测】GRNN广义回归神经网络-MATLAB 广义回归神经网络(GRNN)是一种基于径向基函数(RBF)的神经网络模型,主要用于非线性回归任务。与传统的回归分析方法相比,GRNN具有更强的非线性映射能力和学习速度,能够快速逼近复杂的非线性关系。输入层、模式层、求和层和输出层。输入层接收输入数据,模式层通过径向基函数将输入映射到高维空间,求和层对模式层的输出进行加权求和,最后输出层生成预测结果。GRNN的核心思想是利用高斯核函数计算输入与训练样本之间的相似度,然后根据相似度加权平均得到预测值。 阅读详情

相关推荐

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4725

== 和 equals 的区别是什么

== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址) equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即

yangAugust的博客 175

STM32 上 FreeRTOS 的启动与任务调度详解

4. SysTick定时器:FreeRTOS启动调度器后,会接管STM32的SysTick定时器,用于生成系统节拍,因此不要在HAL库中重复配置SysTick(比如HAL_Init()中已配置,无需再手动调用SysTick_Config()),否则会导致系统节拍异常,任务延迟不准。2. 任务栈大小需按需配置,不是越大越好(浪费RAM),也不能太小(会导致栈溢出),比如简单的传感器读取任务,1024字(4096字节)足够,复杂任务(比如串口接收+数据解析)可调整为2048字。

qq_40170041的博客 866

“equals”和“==”的区别

1.一个是运算符,一个是函数 2.“equals”只能用于引用数据类型,而“”不仅仅可以用于引用类型,还可以用于基础数据类型。 3. “”在比较基础数据类型的时候,只是比较两个变量保存的数据是否相等,不一定类型要相同。 “==”比较的是引用数类型时,比较的是它们的地址是否相同。 4. “equals”在object类里和“==”一样比较地址,但是在String、Date、File等包装类里被重写以后,比较的不是两个引用的地址,而是两个对象的实体内容是否 相等。 ...

weixin_45933454的博客 955

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2254

分组背包问题(MCKP)三大算法对比:贪心、Dyer-Zemel和动态规划谁更强?

本文深入对比了分组背包问题(MCKP)的三大主流算法:贪心算法、Dyer-Zemel算法和动态规划。通过分析各自的原理、实现及性能表现,揭示了贪心算法速度快但非最优,动态规划精确但受限于规模,而Dyer-Zemel算法则在效率与最优性间取得了最佳平衡,是解决中等至大规模MCKP问题的首选方案。

vscode6remote的博客 226

==和equals()区别

Integer number=new Integer(100); Integer number1=new Integer(100); //则在基本类型变量中==比较的是变量的值(不一定要求数据类型相同) //输出false 因为在引用类型变量中 == 比较的是同一个对象 System.out.println(number==number1); //因为equals()是O...

蓝色的猴子 286

YOLO与3D点云融合:从原理到实践的多模态3D目标检测指南

最近在实验室和几个研究生聊天,发现一个挺有意思的现象:大家一提到“YOLO+3D点云”这个组合,第一反应往往是“顶会热门”、“发论文利器”,但真上手去复现或者想基于这个方向做点创新时,又常常卡在第一步——感觉每个部分都懂一点,但就是串不起来,不知道从哪开始,也不知道核心的“价值点”到底在哪。 这让我想起几年前刚开始接触这个领域时的自己,也经历过同样的困惑。当时看了很多论文,感觉“3D目标检测”这个方向既酷又难,YOLO负责2D图像里的快速定位,点云提供精确的三维空间信息,听起来是天作之合。但真正把代码跑起来

weixin_34267123的博客 413

equals和==的区别

初步了解在JVM中的内存分配知识         在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中。 初步认识equals与...

旧时光Y的博客 3万+

论文复现5:UMI Universal Manipulation Interface

UMI 采用手持式夹具,加上精心的界面设计,可实现便携式、低成本和信息丰富的数据收集,以进行具有挑战性的双手和动态操作演示。配备这些功能后,UMI 框架解锁了新的机器人操作功能,只需更改每个任务的训练数据,即可实现零样本可推广的动态、双手、精确和长视野行为。我们通过全面的现实世界实验展示了 UMI 的多功能性和有效性,其中通过 UMI Zeroshot 学习的策略在对不同的人类演示进行训练时可以推广到新的环境和对象。项目主页:https://umi-gripper.github.io/

github_38060285的博客 1972

一文掌握 Playwright 的详细使用

Playwright 是一个功能强大的浏览器自动化工具,适用于网页自动化测试、数据抓取和网页交互。通过掌握其基础用法和高级功能,你可以轻松实现各种浏览器自动化任务。Playwright 支持多浏览器、多语言,并且具有高效的异步操作能力,是现代浏览器自动化的首选工具之一。

数据知道的博客 1万+

Pandas知识点-equals()与==的区别

Pandas知识点-equals()与==的区别

weixin_43790276的博客 3124

GameFramework 框架详解之 Network网络模块 工具链

GameFramework(下面简称GF)Demo中,已经给我们提供了Network模块使用的protobuf使用的动态链接库protobuf-net.dll,但是GF并没有给我们提供protobuf相关的工具链,比如:1.proto文件自动导出对应c#的Packet类和PacketHandler类2.导出Packet类继承IReference以便使用引用池。3.自动生成Packet类和PacketHandler的Id,且保持和服务器Id一一对应。

TxNet 2902

equals和==有什么区别?

对于 Object 来说,equals 是用 == 实现的,所以二者是相同的,都是用来比较两个对象的引用是否相同的,但 Java 中的其他类,都会重写 equals 让其变为值比较,而非引用比较,如 Integer 和 String 都是这样。

码上言 1103

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

==和equals的区别?

这道题本身很简单,大部分同学能说出区别,但是在面试的时候,如果每一题都有一个分数的话,大部分同学这道题都拿不到高分,如果你只说==比较的是两个对象的地址,equals可以比较地址也可以比较内容的话,只能拿一个及格的分数,那如何说才能提高本题的分数呢? 首先要说清==是运算符,用来比较两个对象是否相等。Equals是Object类的方法,用于比较两个对象是否相等。 这才是他们直接最大的区别吧?如果把这个和上面的都说出来,你的分数会由60变成70. 我们还要说清==和equals什么时候的作用是相同的。在我

weixin_59705658的博客 318

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java中==和equals的比较和区别

对于JAVA初学者关于==,和equals很难去区分,因此在这里做一下总结,以供参考。 当比较的类型是基本类型时: 只有==,不存在equals,变量比较的都是值 int x=100; int y=x; int z=100; System.out.println(x==y);//true System.out.println(x==z);//true System.out.println(y==z);//tr

weixin_46760335的博客 285

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

String中==和equals分别比较的是什么?

首先先了解一下java中的==和equals分别比较的是什么? 对于基本的数据类型来说:==比较的是两个基本类型的值。 对于复合数据类型来说:==和equals比较的都是对象在内存中存放地址(确切的说是堆内存地址)。 对于String,Integer,Date等覆盖了equals方法的类型,==比较的是存放的内存地址。而equals比较的是具体覆盖后的代码。 String中equals比较...

SmallSunL的博客 1999

java的equals和“ == ”你真的会了么?

public boolean add(E e) { return map.put(e, PRESENT)==null; } // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object();

qq_21000751的博客 271

Java 条件判断避坑指南:为什么不要用 == 和 equals()?

方法优势自动处理 null,不会抛 NPE专用于字符串,安全高效防止集合为 null 时报错更清晰表达“非空”意图。

2201_75708884的博客 928

Java基础系列之你真的懂==与equals的区别吗?

  对于Java初学者而言,可能会对这两个比较方法比较模糊,有的人可能会觉得两个的方法使用起来结果是一样的等。如果你有这样的想法,我建议你来看看这边博客,让你充分了解这两个比较的异同,以及他们底层是如何比较的等。阅读这篇文章之前,我希望你是对Integer和String这两个类是有所了解的,否则可以参考一下博客以加深你对这两个类的理解:   1、jdk源码阅读笔记-String   ...

anwen3267的博客 192

"=="和equals方法究竟有什么区别?

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存...

学会坚强 86

字符串判断equals和“==”的区别(白话,看完必会)

==: == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。 1、比较的是操作符两端的操作数是否是同一个对象。 2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。 3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如: int a=10 与 long b=10L 与 dou...

一个只有绵薄之力的老年人 457

Java中equals和==的区别,阿里java电话面试题

原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = “Monday” 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1。面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了。面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了。

jixuczy的博客 902

java中“equals“和“==“的区别

java中"equals"和"=="的区别

weixin_45978397的博客 292

Java中 “==” 与 equals

1. “==”的作用 ==:作用是判断两个对象的地址值是否相等。 1.1 当比较的两个对象是基本数据类型的时候他们比较的是值 基本数据类型有: byte char long double boolean float short int 可能有些同学回好奇,String 不是基本数据类型 但它们的 “str1 == str2”比较的结果却为 true;这是因为 String str = “...

余韵啊 585

第六章:java ==与equals

==与equals

yanyongfu523的博客 157
上一篇: Java-反射
下一篇: Java -- 静态绑定和动态绑定
广州彭于晏
博客等级 码龄8年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值