在Java中,如果我们new String() 知道它会创建新的字符串对象,它将与没有'new'的对象不同(即使内容相同).
//Java
System.out.println("First" == new String("First")); // false always
Run Code Online (Sandbox Code Playgroud)
在Kotlin中,如果我尝试创建String甚至创建StringBuilder,它仍然与没有String(..)创建的相同.
//Kotlin
println("First" == String(StringBuilder("First"))) //true always
Run Code Online (Sandbox Code Playgroud)
如果创建String(StringBuilder(..))的将重用相同的字符串值,为什么要给构造函数?是否有任何增值,寻找这样的用例.
谢谢.
通过使用==运算符,您将检查字符串之间的结构相等性(它们是否表示相同的字符序列).上面的Kotlin比较代码的Java等价物将是这样的:
Object.equals("First", new String(new StringBuilder("First"))); // true
Run Code Online (Sandbox Code Playgroud)
要检查Kotlin中的引用相等性,您需要使用===运算符.
查看关于平等的Kotlin参考.
小智 5
在使用运算符的Java中,您==使用引用相等性.然而,在科特林,它是结构平等.
要在Kotlin中使用引用相等,您需要使用===运算符.
您可以查看此文档页面以获取更多信息:https://kotlinlang.org/docs/reference/equality.html
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |