标签:指针 psk fbi mlu null btv uga yml sbt
1、定义一个Person类、创建它的对象p
【创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例】
在代码中通过Person p = new Person();创建了一个Person的实例,即Person对象,赋给p变量,产生了两个东西:p变量和Person对象;
public class Person
{
//定义两个成员变量
public String name;
public int age;
//定义say方法
public void say(String content)
{
System.out.println(content);
}
public static void main(String[] age)
{
//通过new关键字调用Person类的构造器,返回一个Person实例,并直接将该Person实例赋给p变量
Person p = new Person();
//访问p的name实例变量,直接为该变量赋值
p.name = "lili";
//调用p的say()方法,声明say()方法时定义了一个形参,调用该方法时必须为形参指定一个值
p.say("haha");
//输出p的name实例变量
System.out.println(p.name);
}
}
在Person类的定义来看,有两个实例变量,变量是需要内存来存储的,因此在创建Person对象是需要内存来存储Person对象中的实例对象,下图显示了Person对象在内存中的存储以及引用变量p指向实际对象的示意图:
2、对象、引用、指针的关系
(1)Person对象由多块内存组成,不同内存块分别存储了Person对象的不同成员变量,将这个Person对象赋值给一个引用变量时,Java让引用变量指向这个对象,即程序中的p变量指向这个由多块内存组成的Person对象;
(2)类也是一种引用类型,因此程序中的Person类型的变量(p变量)实际上是一个引用,存储在栈内存中,指向实际的Person对象,真正的Person对象存储在堆内存中,栈内存中的变量未存储真正的成员变量,只是存储一个地址,通过这个地址引用到实际对象,Java里的引用就是C里的指针;
(3)当一个对象被创建成功后,对象保存在堆内存中,Java不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象;
(4)若希望通过Java的垃圾回收机制来回收一个对象,只需要把它的引用变量赋值为null。
标签:指针 psk fbi mlu null btv uga yml sbt
原文地址:https://www.cnblogs.com/afar-blog/p/12021560.html