返回对象在Java中是什么意思
我知道java是通过值而不是通过引用返回的,所以它创建对象的副本并传递新副本。return语句也是这样吗? 是吗返回对象在Java中是什么意思,java,object,return,Java,Object,Return,我知道java是通过值而不是通过引用返回的,所以它创建对象的副本并传递新副本。return语句也是这样吗? 是吗 return obj; 创建一个新的对象副本或只是返回当前对象本身。因此它创建对象副本并传递新副本 不!它没有 按值返回是指返回obj引用中的值,如果obj指向某个对象,则从该返回方法收集返回值的其他引用也将指向与obj指向的同一对象 不,它不会创建另一个要返回的对象。因此它会复制该对象并传递新的副本 不!它没有 按值返回是指返回obj引用中的值,如果obj指向某个对象,则从该返回
return obj;
创建一个新的对象副本或只是返回当前对象本身。
因此它创建对象副本并传递新副本
不!它没有
按值返回是指返回obj
引用中的值,如果obj
指向某个对象,则从该返回方法收集返回值的其他引用也将指向与obj
指向的同一对象
不,它不会创建另一个要返回的对象。
因此它会复制该对象并传递新的副本
不!它没有
按值返回是指返回obj
引用中的值,如果obj
指向某个对象,则从该返回方法收集返回值的其他引用也将指向与obj
指向的同一对象
不,它不会创建另一个要返回的对象。Java不会复制该对象,它会将对象引用传递给该方法,并在使用
return
它复制值的唯一时间是当您使用主要类型时,如
int
、char
或double
Java不复制对象,它将对象引用传递给方法,并在您使用return
它复制值的唯一时间是当您使用主要类型时,如
int
、char
或double
它只返回当前对象本身。它只返回当前对象本身。您所说的更像是执行此类操作的C++
。返回对象(非基本类型)时,将返回引用,并且不会创建新对象或执行复制 你说的更像是做这些事情的C++
。返回对象(非基本类型)时,将返回引用,并且不会创建新对象或执行复制 在java中,原子类型(char、int、long等)由值返回。对象总是通过引用返回(不进行克隆)。在java中,原子类型(char、int、long等)是通过值返回的。对象总是通过引用返回(不进行克隆)
是否返回obj代码>创建新对象副本或返回当前对象本身
-->obj
是指向堆上实际对象的对象引用。新对象引用(由您)将在您分配返回的obj
的方法中创建
Object method() {
//....
return obj;
}
void methodA() {
Object objA = method(); // obj and objA are different because of their scopes but values are same(assigned to objA). That's why both points to the same Object on heap
}
是否返回obj代码>创建新对象副本或返回当前对象本身
-->obj
是指向堆上实际对象的对象引用。新对象引用(由您)将在您分配返回的obj
的方法中创建
Object method() {
//....
return obj;
}
void methodA() {
Object objA = method(); // obj and objA are different because of their scopes but values are same(assigned to objA). That's why both points to the same Object on heap
}
不,这是一个错误的假设。确实,Java按值传递所有内容,但这意味着:
- 标量变量包含值,所以您可以很容易地看到它们是通过值传递的
- 另一方面,对象变量不包含对象。您可以将它们视为包含对象的伪地址。该伪地址被复制(按值),但它仍然指向同一对象。(实际上,仅使用
新表达式创建对象。)
对于赋值、参数和返回值,上述情况(对于两种类型的变量)都是正确的。否,这是一个错误的假设。确实,Java按值传递所有内容,但这意味着:
- 标量变量包含值,所以您可以很容易地看到它们是通过值传递的
- 另一方面,对象变量不包含对象。您可以将它们视为包含对象的伪地址。该伪地址被复制(按值),但它仍然指向同一对象。(实际上,仅使用
新表达式创建对象。)
对于赋值、参数和返回值,上述情况(对于两种类型的变量)都是正确的。您说“我知道java是通过值而不是通过引用返回的,因此它会复制对象并传递新副本”。这完全是错误的。@jlordo:是的,你是对的。我可以说“它复制了对对象的引用,而不是对象本身”?你可以说“我知道java是通过值而不是引用返回的,所以它复制了对象并传递了新的副本”。这完全是错误的。@jlordo:是的,你是对的。我可以说“它复制了对对象的引用,而不是对象本身”?它返回了对对象的引用。不是对象本身。细微差别,影响巨大。它返回对对象的引用。不是对象本身。细微差别,影响巨大。