在java中传递引用

时间:2016-01-28 13:48:01

标签: java reference

我知道原语是通过java中的值传递的。 但是什么是被传递的引用?通过引用或价值?我无法找到明确的答案。

3 个答案:

答案 0 :(得分:0)

Java没有通过引用传递方法参数; 按值传递

示例:

public void swap(int var1, int var2)
{
  int temp = var1;
  var1 = var2;
  var2 = temp;
}
  

swap()返回时,作为参数传递的变量仍然存在   保持原有价值。

如果对象引用是按值传递的,那么它似乎是通过引用传递而事实并非如此

示例:

public void swap(Point p1, Point p2)
{
  p1.x = 100;
  p1.y = 100;
  Point temp = p1;
  p1 = p2;
  p2 = temp;
}
public static void main(String [] args)
{
  Point pnt1 = new Point(0,0);
  Point pnt2 = new Point(0,0);
  System.out.println("X: " + pnt1.x + " Y: " +pnt1.y); 
  System.out.println("X: " + pnt2.x + " Y: " +pnt2.y);
  System.out.println(" ");
  swap(pnt1,pnt2);
  System.out.println("X: " + pnt1.x + " Y:" + pnt1.y); 
  System.out.println("X: " + pnt2.x + " Y: " +pnt2.y);  
}

输出

X: 0 Y: 0
X: 0 Y: 0
X: 100 Y: 100
X: 0 Y: 0

答案 1 :(得分:0)

确实,一切都是通过引用传递的。请记住,Java中的所有对象都存储为指针。传递对象时,您将传递对指针的引用,而不传递对象本身。

答案 2 :(得分:0)

来源:Google

  

Java按值传递所有原始数据类型。这意味着一份副本   制作,以便它不能被修改。传递Java对象时,   你正在传递一个对象引用,这使得修改成为可能   对象的成员变量。

一个非常好的解释: Is Java "pass-by-reference" or "pass-by-value"?