gpt4 book ai didi

java - return (string expr) 和 return New String(string expr) 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:40 27 4
gpt4 key购买 nike

这两种方法有区别吗?

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

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

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

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

最佳答案

实际没有区别

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

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

String str = "my string";

如果“我的字符串”已经存在于字符串池中。然后它将使用相同的字符串而不是创建新的字符串。

这就是为什么,

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

str1==str2? --> will return true

上面的结果将为真,因为使用了池中的相同 String 对象。

但是当你这样做的时候,

String str = new String("new string");

总是会创建一个新的 String 对象,而不管池中是否已经存在相同的对象。

比较:

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

str1==str2 --> will return false

关于java - return (string expr) 和 return New String(string expr) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451786/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com