用Java复制对象

用Java复制对象,第1张

用Java复制对象

Java中的每个变量都是一个 引用 。所以当你这样做

SomeClass s2 = s1;

您只是指向

s2
与指向相同的对象
s1
。您实际上是在将引用s1的值(指向的一个实例
SomeClass
)分配给s2。
如果您修改
s1
s2
也会被修改
(因为它指向同一对象)。

基本类型有一个例外:

int, double, float, boolean, char, byte, short,long
。它们按值存储。因此,在使用时
=
,您仅分配值,但它们不能指向同一对象(因为它们不是引用)。这意味着

int b = a;

仅将的值设置

b
为的值
a
如果您更改
a
b
则不会更改。

归根结底,一切都是按值分配,它只是引用的值,而不是对象的值(如上所述的原始类型除外)。

因此,在您的情况下,如果要复制

s1
,可以这样进行:

SomeClass s1 = new SomeClass("first");SomeClass s2 = new SomeClass(s1.getText());

或者,您可以向其添加一个复制构造函数,

SomeClass
该复制构造函数将实例作为参数并将其复制到自己的实例中。

class SomeClass {  private String text;  // all your fields and methods go here  public SomeClass(SomeClass copyInstance) {    this.text = new String(copyInstance.text);  }}

这样,您可以轻松复制对象:

SomeClass s2 = new SomeClass(s1);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5350503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-09
下一篇 2022-12-09

发表评论

登录后才能评论

评论列表(0条)

保存