return(string expr)和返回New String(string expr)之间有什么区别?

jac*_*ter 6 java string types class object

这两种方法有区别吗?

public String toString() {
    return this.from.toString() + this.to.toString();
}

public String toString() {
    return new String(this.from.toString() + this.to.toString());
}
Run Code Online (Sandbox Code Playgroud)

(当然,假设from.toString()to.toString()方法正在返回字符串).

基本上我对Java中的字符串处理感到困惑,因为有时字符串被视为基本类型,即使它们是类实例.

Zah*_*med 5

There is no difference in real.

因为你的两个函数都有返回类型String,所以创建一个新开发String()只是一个开销.它就像将字符串再次包装到一个字符串中并在池中创建一个新的字符串,实际上没有任何优势.

但是原始类型和String对象的一个​​主要区别是类String总是创建新的字符串.

String str = "my string";
Run Code Online (Sandbox Code Playgroud)

如果"我的字符串"已存在于字符串池中.那么它将使用相同的字符串而不是创建新的字符串.

这就是为什么,

String str1= "my string";
String str2 ="my string";

str1==str2? --> will return true
Run Code Online (Sandbox Code Playgroud)

上面的结果是正确的,因为使用了来自池的相同String对象.

但是当你这样做的时候

String str = new String("new string");
Run Code Online (Sandbox Code Playgroud)

始终,创建一个新的String对象,而不管池中是否存在相同的对象.

所以比较:

String str1 = new String("new string");
String str2 = new String("new string");

str1==str2 --> will return false
Run Code Online (Sandbox Code Playgroud)