public class Person
{
public String name;
public int age;
public void say(String content)
{
System.out.println(content);
}
}
Person p1 = new person();
Person p2 = p1;
- 从上面Person类定义来看,存在两个实例变量,而变量需要内存来存储。因此创建对象时需要对应的内存来存储Person对象的实例。
- 类是一种引用数据类型,因此程序创建的Person类型的变量实际上是一个引用,该引用存在栈内存中,指向实际的Person对象;而真正的Person 对象则存放在堆内存中。栈内存中的引用变量并未真正存储对象的成员变量,对象的成员变量实际上存放在堆内存中。
- java中的引用相当于C语言中的指针,只是Java把这个封装起来,避免开发者繁琐的指针操作。
- 当一个对象被创建后,这个对象将保存在堆内存中,Java程序不允许直接访问堆内存中的对象,因此只能通过该对象的引用访问该对象。数组和对象都是通过引用来访问他们。
- 堆内存里的对象可以有多个引用。如上代码中的p1和p2都指向同一个对象。