byt*_*orm 2 java swap object instance pass-by-reference
我知道Java类实例是通过引用传递的.我试图交换两个类实例,但它没有奏效.我不明白,如果他们通过引用传递,那么代码应该有效.我在这里错过了什么?
public class Swapper {
public static void main(String[] args) {
NormalClass na = new NormalClass(1235);
NormalClass nb = new NormalClass(5468);
System.out.println("Before: 1st Object -->");
na.print_obj();
System.out.println("Before: 2nd Object -->");
nb.print_obj();
NormalClass.swap(na,nb);
System.out.println("After: 1st Object -->");
na.print_obj();
System.out.println("After: 2nd Object -->");
nb.print_obj();
}
}
class NormalClass{
public int _ID;
public static void swap(NormalClass a, NormalClass b){
NormalClass temp;
temp = a;
a = b;
b = temp;
}
public void print_obj(){
System.out.println(this._ID);
}
NormalClass(int __id){
this._ID = __id;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道Java类实例是通过引用传递的
首先,您不传递实例,而是引用它们.引用按值传递.
在您的方法中,您传递了对两个实例的引用,这两个实例创建了两个实例的副本.然后你交换了那些引用的副本.由于它们是按值传递的,因此不会影响原始引用,从而影响行为.仅供参考,Java中的所有内容都按值传递.
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |