在Java中,如果我们执行new String()
,我们知道它将创建一个新的字符串对象,并且它将与没有'new'的对象不同(即使内容相同)。
//Java
System.out.println("First" == new String("First")); // false always
在Kotlin中,即使我尝试通过创建StringBuilder来创建String,它也将与没有String(..)的情况相同。
//Kotlin
println("First" == String(StringBuilder("First"))) //true always
如果创建的String(StringBuilder(..))
要重用相同的字符串值,为什么要提供构造函数?寻找这种用例,它是否有任何增值作用?
谢谢。
答案 0 :(得分:5)
通过使用C()
运算符,您正在检查字符串之间的结构相等性(它们是否表示相同的字符序列)。您上面的Kotlin比较代码的Java等效代码如下:
==
要在Kotlin中检查引用是否相等,您需要使用Object.equals("First", new String(new StringBuilder("First"))); // true
运算符。
在Equality上查看Kotlin参考。
答案 1 :(得分:5)
在Java中,当您使用运算符==
时,将使用引用相等。但是,在科特林,这是结构平等。
要在Kotlin中使用引用相等,您需要使用===
运算符。
您可以查看此文档页面以获取更多信息:https://kotlinlang.org/docs/reference/equality.html
答案 2 :(得分:1)
要使用引用相等,您需要在Kotlin中使用===运算符。 在java ==运算符中,用于引用相等。但是在科特林,这是结构平等。
答案 3 :(得分:1)
在Java中,==
是引用相等,但是在Kotlin中,==
是结构相等。这意味着,在Kotlin中,==
和string1.equals(string2)
都做同样的事情。在Kotlin中,我们使用===
来实现引用相等。