• Java知识系统回顾整理01基础07类和对象01引用


    一、引用的定义

    引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用。

       

    二、引用和指向

    new Hero();

    代表创建了一个Hero对象

    但是也仅仅是创建了一个对象,没有办法访问它

    为了访问这个对象,会使用引用代表这个对象

    Hero h = new Hero();

    • h这个变量是Hero类型,又叫做引用
    • =的意思指的h这个引用代表右侧创建的对象
    • "代表" 在面向对象里,又叫做"指向"

         

       

    public class Hero {

            

        String name; //姓名    

        float hp; //血量      

        float armor; //护甲     

        int moveSpeed; //移动速度
          

        public static void main(String[] args) {

            //创建一个对象

            new Hero();        

            //使用一个引用来指向这个对象

            Hero h = new Hero();     

        }     

    }

       

    三、多个引用,一个对象

    引用有多个,但是对象只有一个。

    在这个例子里,所有引用都指向了同一个对象。

    对象就像 "房产", 引用就像"房产证"

    房产证的复印件可以有多张,但是真正的"房产" 只有这么一处

       

    public class Hero {

            

        String name; //姓名

            

        float hp; //血量

            

        float armor; //护甲

            

        int moveSpeed; //移动速度

            

        public static void main(String[] args) {

              

            //使用一个引用来指向这个对象

            Hero h1 = new Hero();

            Hero h2 = h1;  //h2指向h1所指向的对象

            Hero h3 = h1;

            Hero h4 = h1;

            Hero h5 = h4;

              

            //h1,h2,h3,h4,h5 五个引用,都指向同一个对象        

        }        

    }

       

    四、一个引用,多个对象

    第8行,引用garen指向新创建的对象(对象1)

    第9行,同一个引用garen指向新创建的对象(对象2)

    这个时候,对象1,就没有任何引用指向了

    换句话说,就没有任何手段控制和访问该对象,那么该对象就变得没有意义。

       

       

       

    五、练习--引用

    题目:

    如下代码

    package charactor;

        

    public class Hero {

        public String name;

        protected float hp;

        

        public static void main(String[] args) {

               Hero h1 =  new Hero();

               Hero h2 =  new Hero();

               Hero h3;

               Hero h4;

               h3 = h1;

               h4 = h3;

        }

    }

    问题:

    h4所指向的对象和h2所指向的对象,是否是同一个对象?

       

    官方解答:

    如果所示,h4指向h3,最终间接地指向了对象1

    而h2指向的是对象2,所以h4和h2不是指向同一个对象

       

       

       

  • 相关阅读:
    python中的内置函数的思维导图
    练习(面试题):关于生成器函数的求和问题
    推导式, 生成器表达式
    生成器
    静态代码块
    java中内存的划分
    静态方法
    Chapter07Scanner类、Random类、ArrayList类
    泛型
    对象数组
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/10775786.html
Copyright © 2020-2023  润新知