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是指向数据数组的指针
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学习笔记---6.面向对象编程01-类对象的构建及对象的引用传递
- JNI学习笔记 C++传递结构体、String、数组对象给JavaC++传递结构体、String、数组对象给Java
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- Java学习笔记之对象传值和引用总结
- Java编程思想学习笔记——一切都是对象
- Effective Java学习笔记---创建和销毁对象
- 11. JAVA常用类库 Part 4 (对象克隆技术clone、Arrays类、Comparable接口、比较器Comparator、观察者设计模式) ----- 学习笔记
- [Java编程思想-学习笔记]第1章 对象导论
- JAVA面向对象基础学习及笔记
- JAVA学习笔记3--类,对象,变量,方法,构造方法,this,引用类型
- Java学习笔记(1)面向对象
- 【学习笔记】java面向对象复习01
- 【原】Java学习笔记016 - 面向对象
- Java开发工具使用及其快捷键和常见对象+JAVA学习笔记-DAY11
- java学习笔记(十)类与对象
- java学习笔记:java的多态,子类和父类的相互转换,父类引用指向子类的对象
- 【java web 学习笔记】java的集合对象
- Java面向对象学习笔记(一)
- Java学习笔记——一切都是对象
- Java File类学习笔记2:File类对象及常用操作方法