相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

如何在Java中复制对象?

请考虑以下代码:

DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'

DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'

dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'
Run Code Online (Sandbox Code Playgroud)

所以,我想复制dumdumtwo并更改dum而不影响dumtwo.但上面的代码并没有这样做.当我改变某些内容时dum,也会发生同样的变化dumtwo.

我想,当我说dumtwo = dum,Java 复制引用.那么,有没有办法创建一个新的副本dum并分配给它dumtwo

java clone copy object

763
推荐指数
18
解决办法
109万
查看次数

Java如何分配指向对象而不是复制?

在课堂上,我有:

private Foo bar;
public Constructor(Foo bar)
{
    this.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)

而不是从参数中提供的对象创建bar的副本,是否可以在构造函数中包含指向bar的指针,以便更改原始栏会更改此对象中的字段?

另一种方式:

int x = 7;
int y = x;
x = 9;
System.out.print(y); //Prints 7.
Run Code Online (Sandbox Code Playgroud)

可以将其设置为打印y打印9而不是7?

java reference

10
推荐指数
2
解决办法
2万
查看次数

Java:getter方法与公共实例变量:性能和内存

抱歉没有问题.通过引用与价值相结合很难!

所以我有一个具有相当大的数据结构的类 - 多维数组.我需要从另一个类访问这些数组.我可以将数组公开并执行经典的objectWithStructures.structureOne.或者,我可以做getters:添加像public int [] [] [] getStructureOne()这样的方法.

有一个getter是否复制了多维数组?或者它通过引用传递它,你只是不能改变引用的对象?

我担心记忆和表现.但是,如果不使数据结构公开,那么将数据结构公之于众,看起来就像编写糟糕的编码实践一样.

ADDENDUM:所以当我使用getter方法返回对象(例如数组)的引用时,是否可以使用getter方法编辑该对象?或者它是否以某种方式"锁定"进行编辑,以便只有它所在的类可以改变该对象?

java performance memory-management

6
推荐指数
1
解决办法
1845
查看次数