1. 创建对象: new FighterPlane(); // 对象分配在堆heap上
2. 声明一个对象引用:FighterPlane fp; // fp作为局部变量分配在栈stack上 fp也称为引用变量(Reference Variable)
3. 初始化对象引用: fp = new FighterPlane(); // fp指向实际对象
实质是将新创建的FighterPlane对象的首地址赋给对象引用fp,从此fp与 该对象关联,通过fp即可操纵该对象
可以将对象和对象引用作如下比喻:
遥控器(对象引用)和电视机的关系(对象)
通过对象引用给对象发送消息,即调用对象的方法(操作)
基本数据类型作为参数传递是值传递,而对象是引用传递。
对象是引用传递,当对象作为参数传递时,传递的是对象的地址。
对象的引用传递举例
class IntClass {
int value;
}
public class RunIntClass {
public static void modifyValue(IntClass s, int val){
s.value = val;
}
public static void main(String[] args) {
IntClass a = new IntClass();
modifyValue(a,8);
System.out.println(a.value);
}
}
class IntClass {
int value;
}
public class RunIntClass {
public static IntClass getInstance() {
//在方法中产生对象
IntClass s = new IntClass ();
s.value=8;
return s; //返回对象引用
}
public static void main(String [] args) {
IntClass a = getInstance(); System.out.println(a.value);
}
}