我从未见过返回语句中使用的关键字“new”,而我对new的理解是它创建了一个新对象。在此上下文Practice permutation = new Practice();
中使用的“new”是它创建一个名为permutation
的新对象。 permutation
是对某些内存地址的引用。那么,return new String(content)
可能会返回一个内存地址?所以我的问题是,在这种情况下new
实际上意味着什么?我为我的noob问题道歉...
import java.util.Arrays;
public class Practice {
public String sort(String s) {
char[] content = s.toCharArray();
Arrays.sort(content);
return new String(content);
}
public static void main(String[] args){
Practice permutation = new Practice();
System.out.println(permutation.sort("hello"));
}
}
答案 0 :(得分:3)
return new String(content);
表示它使用您传递的内容创建一个新的字符串对象。它类似于
String str = new String(content)
return str;
答案 1 :(得分:1)
此:
return new String(content);
(逻辑上)与此相同:
String result = new String(content);
return result;
它只是跳过将值存储在变量中并直接返回的步骤。没有什么不同的事情发生,一个新的对象被实例化,一个对象被返回。
答案 2 :(得分:1)
return new String(content);
做了三件事:
1)在内存中的某处创建String
对象
2)在你当前线程的这个堆栈中创建它的指针(或引用)
3)它将此引用返回给调用者。
与
相同s = new String(content);
return s;
答案 3 :(得分:1)
你的理论是正确的,但你对变量的理解有点偏离(以一种非常常见的方式......)一个对象永远不会有名字;它独立于任何涉及它的变量 1 。 Practice permutation = new Practice();
做了三件事:
Practice
对象Practice
对象请注意permutation
不是对象的名称;它是变量的名称,变量引用到对象。您可以创建几个引用同一对象的变量,并且可以创建一个任何东西都没有引用的对象 - 后者是return new
中发生的事情。
1 是否有任何对象 的引用都有效,因为未引用的对象可能被垃圾收集 - 但这是一个更高级的主题。< / p>
答案 4 :(得分:1)
使用关键字 new 时,不应将其与任何赋值运算符相关联。例如, new 关键字的作用是,它创建对指定类的新实例的引用并返回它。所以当你把陈述
new Object();
该语句完全有效,它返回对Object类的新引用。唯一的事情是引用没有设置为任何东西,因为没有操作符在其上执行。所以,当你有
Object myObj = new Object();
引用来自 new Object()语句,equals运算符将其设置为等于myObj变量。所以现在,如果你理解了,那么当你有
时return new Object();
引用再次来自 new Object()语句, return 关键字接受该引用并将其从您所在的方法中返回。