Kotlin中的字符串值

时间:2018-06-22 09:18:49

标签: kotlin

在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(..))要重用相同的字符串值,为什么要提供构造函数?寻找这种用例,它是否有任何增值作用?

谢谢。

4 个答案:

答案 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中,我们使用===来实现引用相等