一、引用的定义

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

二、引用和指向

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不是指向同一个对象

Java知识系统回顾整理01基础07类和对象01引用的更多相关文章

  1. Java知识系统回顾整理01基础03变量03字面值

    一.字面值定义 创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象.  给基本类型的变量赋值的 ...

  2. Java知识系统回顾整理01基础01第一个程序02命令行格式编译和执行Java程序

    一.先看运行效果 在控制台下运行第一个Java程序,可以看到输出了字符串 hello world 二.准备项目目录 通常都会在e: 创建一个project目录 在这个例子里,我们用的是e:/proje ...

  3. Java知识系统回顾整理01基础06数组07数组工具类Arrays

    一.Arrays简介 Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能. 大大提高了开发人员的工作效率. 二.Arrays提供的数组复制方法 与使用System.arraycopy ...

  4. Java知识系统回顾整理01基础05控制流程07结束外部循环

    一.break是结束当前循环 二.结束当前循环实例 break; 只能结束当前循环 public class HelloWorld { public static void main(String[] ...

  5. Java知识系统回顾整理01基础04操作符01算术操作符

    一.算数操作符类别 基本的有: + - * / % 自增 自减: ++ -- 二.基本算数操作符 + - * / 基本的加 减 乘 除 public class HelloWorld { public ...

  6. Java知识系统回顾整理01基础02面向对象01类和对象

    一.面向对象实例--设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女 所有这些英雄,都有一些共同的状态 比如,他们都有名字,hp,护甲,移动速度等等 这样我们就可以设计一 ...

  7. Java知识系统回顾整理01基础01第一个程序01JDK 安装

    一.首先第一步看JDK配置成功后的效果 点WIN键->运行(或者使用win+r) 输入cmd命令 输入java -version 注: -version是小写,不能使用大写,java后面有一个空 ...

  8. Java知识系统回顾整理01基础06数组01创建数组

    一.数组定义 定义:数组是一个固定长度的,包含了相同类型数据的 容器 二.声明数组 int[] a; 声明了一个数组变量. []表示该变量是一个数组 int 表示数组里的每一个元素都是一个整数 a 是 ...

  9. Java知识系统回顾整理01基础05控制流程01if

    一.if if(表达式1){ 表达式2: } 如果表达式1的值是true, 就执行表达式2 public class HelloWorld { public static void main(Stri ...

随机推荐

  1. android开发之java JDK环境变量配置的信息代码 附详细教程。

    java环境变量配置: [用户变量]class_path    .;%JAVA_HOME%\lib\tools;%JAVA_HOME%\jre PATH           ;%JAVA_HOME%\ ...

  2. MonoBehaviour生命周期与对象数据池应用

    预热游戏对象: tempObject = Instantiate(cubePrefab) as GameObject ; tempObject .SetActive( false ); 游戏对象tem ...

  3. LR监听Linux

    1.准备 1)CentOS6.0 2)LR11.0 3)Linux安装包: xinetd-2.3.14-33.el6.i686.rpm (CentOS安装盘自带) rsh-server-0.17-60 ...

  4. wxWidgets教程

    https://www.wxwidgets.org/docs/tutorials/ http://zetcode.com/gui/wxwidgets/ https://docs.wxwidgets.o ...

  5. python3笔记-函数

    创建函数 def 函数名(参数列表): 函数语句 函数的命名规则:一个单词直接小写 # 多个单词,每个单词小写,以下划线分隔 文档化说明 函数首行加 '' 或 ''' ''' 使用函数名.__doc_ ...

  6. Oracle错误 ora-12514 解决方法-九五小庞

    成功连到数据库上之后,查看listener状态:lsnrctl status status READY 状态,需要由非归档转为归档模式,故操作如下: 1.关闭数据库shutdown immediate ...

  7. 原生javaScript导出表格数据

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  8. shell小技巧(2)查找文件时,排除几种类型文件

    代码: find -type f ! -name "*.jpg" ! -name "*.png" ! -name "*.jpeg" ! -n ...

  9. 业务级别MySQL

    业务级别MySQL 目录 业务级别MySQL 1. 权限管理和备份 1. 用户管理 1. SQLyog可视化操作 2. SQL命令操作 2. MySQL备份 3. 规范数据库设计 1. 为什么需要设计 ...

  10. python应用 曲线拟合04

    python应用 曲线拟合04 → 多项式拟合 主要是使用 numpy 库中的 polyfit() 函数,见第 66 行, z = np.polyfit(x_proton, y, 3) ,其中待拟合曲 ...