• Java自学-类和对象 引用


    什么是Java中的引用?

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

    步骤 1 : 引用和指向

    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();
             
        }  
          
    }
    

    步骤 2 : 多个引用,一个对象

    引用有多个,但是对象只有一个。
    在这个例子里,所有引用都指向了同一个对象。
    对象就像 "房产", 引用就像"房产证"
    房产证的复印件可以有多张,但是真正的"房产" 只有这么一处

    多个引用,一个对象

    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 五个引用,都指向同一个对象
             
        }  
          
    }
    

    步骤 3 : 一个引用,多个对象

    第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 garen =  new Hero();
               garen =  new Hero();
        }
    }
    

    练习引用
    (如代码,问题:
    h4所指向的对象和h2所指向的对象,是否是同一个对象?)

    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指向h3,最终间接地指向了对象1
    而h2指向的是对象2,所以h4和h2不是指向同一个对象
    在这里插入图片描述

  • 相关阅读:
    缺少一个=出现的问题
    快速排序+归并排序
    ACwing简单题(14)
    浅谈#ifndef
    fstream 使用详解
    _stat函数的使用
    关于文件结构体的使用
    new的使用
    ACwing13题目
    ACwing13题
  • 原文地址:https://www.cnblogs.com/jeddzd/p/11416019.html
Copyright © 2020-2023  润新知