码迷,mamicode.com
首页 > 其他好文 > 详细

对象、引用和指针

时间:2019-12-11 12:39:29      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:指针   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!