2017-05-13 63 views
-5

例如,我有一个班车,我有两个对象类汽车宝马和奔驰。因此,为了实例化,我们必须声明一个新的变量类似;类变量和类实例有什么区别?

Car BMW = new Car();

现在,如果什么对象被声明为

Car Benz;

如果第一个经过的参考,第二个按值传递,谁能帮我做的交换用一个例子实例化对象?

+0

按值传递和按引用传递是指将参数传递给函数/方法 - 你不提任何东西 - 请澄清你的问题。我们可能会猜想,您想要创建一个交换两个变量的方法,但最好告诉我们您想完成什么。另外 - Java只支持传递值。 – nos

+3

你必须理解**变量**和**对象**之间的区别 - 你写的就好像这些是相同的东西。变量*指的是一个对象,它本身不是对象。 '汽车奔驰;'只是声明一个变量而不初始化它,没有涉及任何对象。 – Jesper

+0

@nos这很棒,但看到我做了一个实验。在所提到的代码中,请添加这个'System.out.println(aDog);',它实际上给出了一个十六进制数字,指的是寄存器中的地址。这意味着狗实际上指的是一个内存位置。我是一名java初学者,实际上我经历了o'reilly编写的java编程,其中说,默认情况下,jave将参数作为参考传递。 – shiva

回答

0
public class A{ 
    int count = 1; 
} 

public class Main{ 

public static void main(String[] args) { 

    A a = new A(); 
    A b = new A(); 
    b.count = 2; 

    System.out.println("Before swap"); 

    System.out.println("A count : "+a.count); 
    System.out.println("B count : "+b.count); 

    A c = b; 
    b = a; 
    a = c; 

    System.out.println("Before swap"); 

    System.out.println("A count : "+a.count); 
    System.out.println("B count : "+b.count); 


} 

}

+0

你不明白我的意思。你可以在主函数中交换这样的东西。但是我希望你通过调用一个函数来交换,就像一个函数'swap(a,b);'实际上应该把a和b作为a。如果你检查C和C++中的指针,你会得到更多的清晰度。 – shiva

+0

http://www.geeksforgeeks.org/swap-exchange-objects-java/ –

+0

@shiva为什么?在任何情况下,如果您修改函数的参数,调用函数将不会看到该更改;参数值是该函数的本地值。如果这些参数是引用,并且您更改了引用对象内的某些内容,则该更改将反映在调用函数中。 –

相关问题