偷偷理解Java和Scala中==和equals()的区别

22 篇文章 2 订阅
订阅专栏

君霸王,社稷定,君不霸王,社稷不定🥽

目录

Java总结
Scala总结

Java中==equals()

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public class Test {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = "abc";
        System.out.println(s1 == s2);       // false   
        System.out.println(s1.equals(s2));  // true
    }
} 

总结:

==比较的是对象的内存地址

equals()默认和==一样,也比较的是对象的内存地址,只不过是String对equals()方法进行了重写,字符串的equals()方法比较的是内容。

在这里插入图片描述

Scala中==equals()eq()

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
object Test {

  def main(args:Array[String]): Unit={
    var s1:String = new String("abc")
    var s2:String = "abc"
    println(s1 == s2)		//true
    println(s1.equals(s2))	//true
    println(s1.eq(s2))	//false
  }
}

scala中,==和equals()功能相同,都比较的是内容是否相同

object Test {

  def main(args:Array[String]): Unit={
    var s1:String = new String("abc")
    var s2:String = "abc"
    println(s1 == s2)		//true
    //println(s1.equals(s2))	//true
    //println(s1.eq(s2))	//false
  }
}

我们单独编译这一条,然后用反编译工具查看字节码文件。
1.从伴生类作为入口开始执行,然后调用伴生对象所属类中的main方法
在这里插入图片描述
2.查看伴生对象所属类中的main方法在这里插入图片描述发现它底层调用的是equals()方法,因此在Scala中,==和equals()功能相同,都比较的是内容是否相同

3.在Scala 中要想比较地址是否相同,就用第三种方法,eq()方法

eq()编译查看字节码文件
在这里插入图片描述
在这里插入图片描述

对于==和equals()是否多余?

各有各的应用场景。
对于引用类型:
			1. eq()比较地址是否相同
			2. equals()比较内容是否相同  --->  前提是要重写equals()方法
对于值类型:
			==比较是否相等  --->  a == 100
			例如想要判断a是否等于100 这个时候用equals()就不太合适了,直接用a == 100就行了。

总结:

在这里插入图片描述

scala=>含义
芒果summer小仙女
05-11 4730
解释一: Scala的=>符号可以看做是创建函数实例的语法糖。例如:A => T,A,B => T表示一个函数的输入参数类型是“A”,“A,B”,返回值类型是T。 另外,() => T表示函数输入参数为空,而A => Unit则表示函数没有返回值。 解释二: => 最简化的理解,可以把=>的左侧理解为”LEFT”,右侧理解为“RIGHT”。 然后,“ LEFT => RIGHT ” 的含义变成:取左边,然后右转 使用场景: 1. /...
Scala字符串==和eq的区别
weixin_43616627的博客
06-16 752
Scala处理两个字符串时,==更加类似于Javaequals比较的是两个字符串的内容是不是相同的;而eq方法比较的是两个字符串的首地址的地址值是否相同。 可以看下面这段代码: def main(args: Array[String]): Unit = { val s1 = "abc" val s2 = new String("abc") println(s1 == s2) println(s1.eq(s2)) } 输出结果: true false ...
Scala的==与equals
qq_40233706的博客
03-04 1812
先把java的“==”与“equals”列出来 java“==”比较的是对象的内容 javaequals比较的是对象的内容 再把scala的“==”与“equals”列出来 Scala"==”比较字符串,比较对象 Scala"equals"常用于比较地址值 scala没有,++、--运算符Java不一样, 在scala,可以直接使用 == 、 !=...
Scala的==和===的差异
Buevara的博客
08-07 4489
“==”使用equals方法检查两个引用是否指向同一个对象。 “===”的定义取决于上下文/对象。对于Spark,“===”正在使用equalTo方法。 参见 - for == https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/sql/Column.html#equals(java.lang.Object) -...
Scala注解详解
旧时明月
09-01 5329
什么是注解: 就是scala 编译器,就可以在编译的时候,注解有一些特殊的操作。 scala ,有哪些地方可以添加注解? scala,可以给类,方法,fields、local variable、constructor / method / functions parameters添加注解,而且scala是支持给某个目标添加多个注解的 有一个很金典的注解@BeanProperty
ScalaScala的_ 和 _*分别代表什么
热门推荐
wyz0516071128的博客
07-14 2万+
将函数 赋值给一个变量,注意语法 val max4 = max3 _ 如果函数的参数,函数体(右边),有且仅使用一次,参数可以使用下划线_代替 println("--litter--") greeting("litter",println(_)) 作为函数的参数 一个匿名的函数传递给一个方法或者函数的时候,scala会尽量推断出参数类型。例如一个完整的匿名函数作为参数可以写为 sc...
Scala=>的用法
weixin_33955681的博客
10-10 490
1. 表示函数的类型(Function Type)例如: def double(x: Int): Int = x*2 函数double的类型就是 (x: Int) => Int 或者 Int => Int备注: 当函数只有一个参数的时候,函数类型里面括起来函数参数的括号是可以省略的。使用函数的类型,就可以定义函数变量(Function Value/Function Va...
浅析JavaScala的Future
08-29
主要介绍了JavaScala的Future的相关资料,需要的朋友可以参考下
ConnectFour:JavaScala基于控制台的Connect Four游戏实现
05-23
该游戏基于控制台,并且在JavaScala均已实现。 指示 Java 只需使用javac命令编译源代码。 使用java命令运行字节码。 Scala 使用sbt进行项目建设。 直接编译文件的scalac可能不起作用。 该代码库使用支持scala...
JavaScala 如何调用变参
09-07
JavaScala 语言都提供了对变参方法的支持,这使得开发者可以...理解这一点对于跨语言交互和调试是至关重要的,尤其是在 JavaScala 项目混合使用的环境。正确使用这些语言特性可以提高代码的可读性和兼容性。
Scala(一)-- 语法简介
博客&brz
10-22 4395
scala Scala(Scalable Language)以一种简洁、高级的语言将面向对象和函数式编程结合在一起.Scala的静态类型有助于避免复杂应用程序的bug,它的JVM和JavaScript运行时允许您构建高性能的系统,可以轻松地访问庞大的库生态系统。 1、scala的特点: (1)、面向对象 scala是一个纯面向对象的语言,所有的值都是对象、类和对象行为用类和特质来描述 (2)、函...
scala==,equals,eq与ne比较
学习,我们是认真的
05-25 7673
记录一下scala常用的几种比较方法的用法“==”方法的使用及含义首先看一下官方文档给的解释:final def ==(arg0: Any): Boolean //测试两个对象是否相等。表达式x==that含义为:如果x eq null 则为that eq null 否则为x.equals(that) Test two objects for equality. The expre
Scala ==、equals、eq的区别与联系
FlatTiger的博客
03-03 1162
var str1 = new String("abc") var str2 = "abc" println(s"str1==str2:${str1==str2}") // true println(s"str1.equals(str2):${str1.equals(str2)}") // true println(s"str1.eq(str2):${str1.eq(str2)}") // false 特别说明: 在Scala,所有的运算符都是类的方法。.
Scala的“=>”符号简介
lihancheng的专栏
02-22 1611
Scala的=>符号可以看做是创建函数实例的语法糖。例如:A => T,A,B => T表示一个函数的输入参数类型是“A”,“A,B”,返回值类型是T。请看下面这个实例: scala> val f: Int => String = myInt => "The value of myInt is: " + myInt.toString() f: Int => String = sca
Scala的 -> 与 <-以及=>,{}和()
someInNeed的博客
05-09 1万+
<-只会出现在for循环里面 ->只会出现在k->v里面 但是=>就较为复杂了,有四种用法 1.表示函数的返回类型(Function Type) //定义函数 scala> def double(x: Int): Int = x*2 double: (x: Int)Int //定义一个函数变量: scala> var x : (Int) =&...
Scala的下划线到底有多少种应用场景
congliibm的专栏
12-23 1295
我目前了解的有一下几个用处: 1、作为“通配符”,类似Java的*。如import scala.math._ 2、:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就是将1 to 5当作参数序列处理。 3、指代一个集合的每个元素。例如我们要在一个Array a筛出偶数,并乘以2,可以用以下办法: a.fil...
Scala 的那些奇怪的符号 (一)
菜刚RyuGou的专栏
07-29 1万+
Scala的语法很多,有些人认为过于繁琐,有些人却认为正是因为繁琐,所以才让这门语言严谨和强大。 例如在翻阅Scala资料或者查看Scala源码的时候,经常会看到“&lt;:”和“&gt;:”,这是什么鬼?下面我就来探讨一下这两个符号的用法: “&lt;:”符号 我们定义一个类:“Earth” class Earth { def sound(){ ...
scala的:: , +:, :+, :::, +++, 等操作的含义
JasonLee实时计算
07-21 2万+
初学scala者肯定会对:: , +:, :+, :::, +++,这些操作有些疑惑,今天总结一下,方便大家的使用 package test /** * scala的:: , +:, :+, :::, +++, 等操作; */ object listTest { def main(args: Array[String]): Unit = { val list = List...
Superset安装后,初始化数据库出现ModuleNotFoundError: No module named ‘cryptography.hazmat.backends.openssl.x509‘
最新发布
阿年的博客
01-09 5594
Superset安装后,初始化数据库出现ModuleNotFoundError: No module named ‘cryptography.hazmat.backends.openssl.x509‘
Java equals陷阱:理解Object.equals与隐含细节
本文将深入探讨Javaequals方法及其行为,重点关注以下几个关键点: 1. **默认行为与重写**: Javaequals方法在Object类被定义,其默认行为是检查两个对象的内存地址是否相同。对于大多数类来说,这通常不是...
写文章

热门文章

  • 【子网划分】求子网网络前缀、子网地址、每个子网可以分配给主机使用的最小地址和最大地址 14949
  • HTML中的空格、Tab、书名号大于号以及常用特殊符号 14549
  • 书店销售管理系统----数据库原理及应用综合实验 13428
  • MySQL基础练习题 7152
  • Superset安装后,初始化数据库出现ModuleNotFoundError: No module named ‘cryptography.hazmat.backends.openssl.x509‘ 5593

分类专栏

  • hive 20篇
  • Spark 5篇
  • Hadoop 3篇
  • Flume 1篇
  • Flink 9篇
  • Scala 12篇
  • 大数据 22篇
  • 数据库系统工程师 11篇
  • 计算机网络 5篇
  • 操作系统 9篇
  • 其他 4篇
  • 数据库 12篇
  • 经典Java编程练习题【持续更新......】 5篇
  • 工具 7篇
  • 前端 14篇
  • JavaWeb 10篇

最新评论

  • Python实现PU口袋活动更新提醒

    bestyuan227: 有刷pu分的脚本吗

  • 源码跟踪,案例详解Spark的分区规则

    学无止境_--_: 写的很厉害!!!!!!

  • 【子网划分】求子网网络前缀、子网地址、每个子网可以分配给主机使用的最小地址和最大地址

    陈奕云: 第二问应该要再除以4,因为问的是每一个子网,分配了四个子网,所以应该是16个

  • HQL - 分析用户会话行为轨迹

    peterick_zhou: last_value(session_point, true) over (partition by user_id order by action_time) session_id 这里的分区字段是不是还要加上 session point

  • 【访问内存的有效时间】分页存储中,访问内存的有效时间

    qq_40626492: 简单明了

大家在看

  • Verilog:参数(parameter)的使用
  • 【车间调度】白鲸算法BWO求解零空闲流水车间调度问题NIFSP【含Matlab源码 7936期】
  • C++中指针、引用与const的深入解析
  • 《R 语言统计分析与可视化从入门到精通》好书推荐
  • 10.23学习

最新文章

  • 初始化Superset数据库时提示:Refusing to start due to insecure SECRET_KEY(由于不安全SECRET_KEY而拒绝启动)
  • Spring Boot打war包部署到Tomcat,访问页面404 !!!
  • SpringBoot项目本地无错误,打包上传服务器连不上MySQL报错:com.alibaba.druid.pool.DruidDataSource : init datasource error
2024年12篇
2023年76篇
2022年16篇
2021年42篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿年、嗯啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家汕尾玻璃钢人像雕塑吉安玻璃钢花盆花器济南富源玻璃钢雕塑商场屋檐灯光美陈济源玻璃钢浮雕不锈钢人物雕塑珠海自发光动物玻璃钢雕塑供应商广州园林景观玻璃钢雕塑设计公司伦教玻璃钢人物雕塑精工打造安庆抽象玻璃钢雕塑优势商场主题气球美陈焦作玻璃钢卡通雕塑厂家电话商场墙体美陈成都玻璃钢人物雕塑供应商鹤壁哪里有玻璃钢卡通雕塑厂家商场灯光设施美陈玻璃钢雕塑厂家烟台郑州个性化玻璃钢雕塑设计美陈玻璃钢雕塑销售方法玻璃钢雕塑系哪里有玻璃钢雕塑制作福建创意玻璃钢雕塑哪家便宜各种玻璃钢雕塑厂家喷水玻璃钢雕塑水泵玻璃钢海豚雕塑艺术造型湖北玻璃钢雕塑厂安阳人物玻璃钢卡通雕塑价格重庆定制玻璃钢面包雕塑玻璃钢雕塑用不用胶衣云南特色玻璃钢雕塑价位深圳玻璃钢雕塑摆件有哪些香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化