当前位置: 首页 > news >正文

Java与Kotlin中“==“、“====“区别

一、Kotlin 中的区别

  1. ==(双等于) - 结构相等性检查

    • 比较两个对象的内容是否相等(相当于调用 equals() 方法)。

    • 自动处理 null 安全:a == b 等价于 a?.equals(b) ?: (b === null)

    • 示例

      val s1 = "Hello"
      val s2 = String("Hello".toCharArray())println(s1 == s2)  // true(内容相同)
  2. ===(三等于) - 引用相等性检查

    • 比较两个变量是否指向同一个内存地址(同一个对象实例)。

    • 示例

      val s1 = "Hello"
      val s2 = String("Hello".toCharArray())println(s1 === s2)  // false(不同对象实例)

二、Java 中的区别

  1. ==(双等于) - 引用相等性检查

    • 引用类型:比较两个对象的内存地址(是否同一个实例)。

    • 基本类型(如 intchar):比较值是否相等。

    • 示例

      String s1 = "Hello";
      String s2 = new String("Hello");System.out.println(s1 == s2);  // false(不同对象实例)
  2. 没有 === 操作符

    • Java 不支持 ===,内容相等需显式调用 equals() 方法:

      System.out.println(s1.equals(s2));  // true(内容相同)


三、关键区别总结

操作符KotlinJava
==内容相等(自动调用 equals()引用类型:内存地址;基本类型:值
===内存地址相等(引用相同)不存在(用 == 替代)

使用场景

  • Kotlin

    • 需要比较内容时用 ==(如字符串、集合)。

    • 需要检查是否为同一对象时用 ===(如单例、枚举)。

  • Java

    • 比较内容时必须用 equals()

    • 检查内存地址用 ==


四、示例对比

// Kotlin
val a: String? = "Hi"
val b: String? = "Hi"
val c: String? = String("Hi".toCharArray())println(a == b)   // true(内容相同)
println(a === b)  // true(编译器优化,指向同一常量)
println(a === c)  // false(不同对象)
// Java
String a = "Hi";
String b = "Hi";
String c = new String("Hi");System.out.println(a.equals(b)); // true(内容相同)
System.out.println(a == b);      // true(常量池同一对象)
System.out.println(a == c);      // false(不同对象)

http://www.dtcms.com/a/309346.html

相关文章:

  • 解锁 Grok-4 —— 技术架构、核心能力与API获取指南
  • 梯度下降的基本原理
  • 如何改变Jupyter的默认保存路径?
  • 电子邮箱域名解析原理
  • Scene as Occupancy
  • 深入剖析Spring IOC容器——原理、源码与实践全解析
  • Charles中文版抓包工具详解 实现API调试提效与流量分析优化
  • 肖特基二极管MBR0540T1G 安森美ON 低电压 高频率 集成电路IC 芯片
  • Linux 系统监控脚本实战:磁盘空间预警、Web 服务与访问测试全流程
  • 嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
  • 60 GHz DreamHAT+ 雷达已被正式批准为“Powered by Raspberry Pi”产品
  • 浏览器【详解】requestIdleCallback(浏览器空闲时执行)
  • CS224n:Word Vectors and Word Senses(二)
  • LOVON——面向足式Open-Vocabulary的VLN导航:LLM做任务分解、YOLO11做目标检测,最后L2MM将指令和视觉映射为动作,且解决动态模糊
  • 九联UNT403HS_海思MV320处理器_安卓9-优盘强刷刷机包
  • 从内部保护你的网络
  • Android ConstraintLayout 使用详解
  • CAN总线协议
  • 【机器学习与数据挖掘实战 | 医疗】案例20:基于交叉验证和LightGBM算法的糖尿病遗传风险预测
  • FastDDS (SharedMemory)
  • Mysql监控数据库
  • synchronized 深度剖析:从语法到锁升级的完整演进
  • VSCode:通义灵码插件安装使用 -- 免费AI编程工具
  • 登录校验一
  • 抢占先机,PostgreSQL 中级专家认证的职业跃迁
  • 逻辑回归在银行贷款审批中的应用:参数选择与实践
  • grafana/lock-stack 日志 Pipeline 配置
  • 性能监控体系:InfluxDB Grafana Prometheus
  • 【东枫科技】DreamHAT+
  • 3D 建模核心术语扫盲:拓扑、UV 展开、烘焙与 AO 贴图解析