参数传递java

Ste*_*one 3 java

我知道,在 Java 中,参数传递是通过原始类型的值和引用类型(对象)的引用进行的。为什么在下面的例子中,我认为是引用传递参数,方法交换后没有修改对象点?

public class Swap2 {

    public static void swap(Point p1, Point p2) {
        Point temp = p1;
        p1 = p2;
        p2 = temp;

        System.out.println("p1.x " + p1.x);
        System.out.println("p2.x " + p2.x);                                 
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        Point p1 = new Point(100,200);
        Point p2 = new Point(300,400);
        //System.out.println("p1=" + p1.toString());
        System.out.println("p1=" + p1);     
        System.out.println("p2=" + p2);
        swap( p1, p2 );
        System.out.println("p1.x " + p1.x);
        System.out.println("p1=" + p1);
        System.out.println("p2=" + p2);    
    }    
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*lis 5

java中的参数总是按值传递,但在对象的情况下,传递的值是对象的引用(指针)。

因此,您的赋值在函数范围之外没有任何影响,因为您只是交换了两个局​​部变量的内容(值)。