Kotlin中的字符串值

Cho*_*eem 1 kotlin

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

谢谢.

ear*_*jim 6

通过使用==运算符,您将检查字符串之间的结构相等性(它们是否表示相同的字符序列).上面的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