Java 对象 间的 传递 赋值
Java中不存在拷贝构造函数(Copy Constructor) 对象间的传递实际上是引用(Reference)传递,就是说传递的不是对象,而是指向对象地址的指针(Pointer)
例如:Java
MyObject mo1=new MyObject();
MyObject mo2=new MyObject();
mo1=mo2;
这里mo1=mo2;相当于
C#中的
mo1=ref mo2;
C++中的
mo1=& mo2;
程序示例:

class Number ...{
int i;
}
public class Assignment ...{
public static void main (String[] args) ...{
Number n1=new Number();
Number n2=new Number();
n1.i=9;
n2.i=47;
System.out.println("(1)n1.i:"+n1.i+",n2.i:"+n2.i);
n1=n2;
System.out.println("(2)n1.i:"+n1.i+",n2.i:"+n2.i);
n1.i=27;
System.out.println("(3)n1.i:"+n1.i+",n2.i:"+n2.i);
}
}运行结果:
(1)n1.i:9,n2.i:47
(2)n1.i:9,n47.i:47
(3)n1.i:9,n27.i:27
Java函数中对象传递也是一样
Java:
functionName(MyObject mo) {
}
相当与C#中的
FunctionName(ref MyObject mo)
{
}
程序示例:运行结果:
a
b

class Letter ...{
char c;
}
public class PassObject ...{
static void f(Letter y) ...{
y.c='b';
}
public static void main (String[] args) ...{
Letter x=new Letter();
x.c='a';
System.out.println(x.c);
f(x);
System.out.println(x.c);
}
}
另外还有一个例子

public class Equivalence ...{
public static void main (String[] args) ...{
Integer i1=new Integer(18);
Integer i2=new Integer(18);
System.out.println(i1==i2);
System.out.println(i1!=i2);
}
}这里i1和i2实际上是指两个对象的地址
所以他们并不相等
运行结果:
false
true
Java对象数组
MyObject[] a;
数组a里面存储的是对象的地址
a是指向地址数组的指针,是指向指针的指针
int[] a1;
数组a1里存储的是int数据
a1是指向数据数组的指针
本文深入探讨了Java中对象之间的传递方式,重点介绍了引用传递的概念及其实际应用。通过多个实例演示了对象赋值、函数参数传递的过程及效果,并对比了与C#、C++等语言的不同之处。
1224





