广州行业门户网站建设怎样做网站运营
一、Kotlin 中的区别
==(双等于) - 结构相等性检查比较两个对象的内容是否相等(相当于调用
equals()方法)。自动处理
null安全:a == b等价于a?.equals(b) ?: (b === null)。示例:
val s1 = "Hello" val s2 = String("Hello".toCharArray())println(s1 == s2) // true(内容相同)
===(三等于) - 引用相等性检查比较两个变量是否指向同一个内存地址(同一个对象实例)。
示例:
val s1 = "Hello" val s2 = String("Hello".toCharArray())println(s1 === s2) // false(不同对象实例)
二、Java 中的区别
==(双等于) - 引用相等性检查对引用类型:比较两个对象的内存地址(是否同一个实例)。
对基本类型(如
int,char):比较值是否相等。示例:
String s1 = "Hello"; String s2 = new String("Hello");System.out.println(s1 == s2); // false(不同对象实例)
没有
===操作符Java 不支持
===,内容相等需显式调用equals()方法:System.out.println(s1.equals(s2)); // true(内容相同)
三、关键区别总结
| 操作符 | Kotlin | Java |
|---|---|---|
== | 内容相等(自动调用 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(不同对象)