您的位置:首页 > 编程语言 > Java开发

Java 学习笔记 (2) -Java 对象 间的 传递 赋值

2007-05-08 13:31 555 查看
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是指向数据数组的指针
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: