变量Java中的引用(地址)存储

时间:2012-07-03 06:23:38

标签: java eclipse object

如何在Java中将一个对象或变量的地址存储在另一个对象中。就像我们在C ++中一样

int a =& b; // b也是int

如果我想通过Java中的引用将引用类型对象传递给任何方法,我怎么能这样做,默认情况下它们是按值传递的。

3 个答案:

答案 0 :(得分:5)

基本上,你不能。 Everything 在Java中通过值传递,并且无法改变它。

最接近的是创建自己的通用可变包装类型,或使用长度为1的数组。包装器方法使您更清楚自己所做的事情,但效率较低。如果需要,可以使用AtomicReference<V>作为包装类型,尽管使用意味着您可能不关注并发性。

对于基本类型的包装器,您可以使用IntegerLong等类,也可以为每个基元编写单独的特定包装类型。 (同样,后者会更有效率。)

但从根本上说,您应该尝试来设计您的代码而不需要它。我非常很少发现它是一种有用的技术。如果你发现自己经常想要这样做,你可能会用另一种语言“思考”......

答案 1 :(得分:0)

您不能在Java中使用地址。根本没有这样的能力。所有的东西都是按价值传递的。当你想传递一个要变异的对象时,你有几种方法:

a)传递数组:

int [] valueArray = new int[1];
valueArray[0] = <your value>;

b)传递一个可变的包装器,你可以自己写一个。

c)传递输入int并返回一个新值:

int a = 5;
a = sqr(a);

答案 2 :(得分:0)

从C ++到java有所不同。即使在java中使用Object的地址不是一个好习惯,也有办法获取逻辑地址。

http://javapapers.com/core-java/address-of-a-java-object/

我希望这会对你有所帮助。