一、引用的定义

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

二、引用和指向

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. Labview学习之路(三)前面板数值控件

    首先看一下前面板都有什么数值控件(我用的labview是17年的,其他版本可能会有不同) 我个人将他们分成了六个部分 第一部分 这个部分大家很好理解,数值输入数值输出,时间输入和时间输出,这里我们讲一 ...

  2. AndroidStudio中利用git下载github或者git.oschina的代码时报错:repository test has failed解决方法

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing AndroidS ...

  3. 屏幕适配 部分知识点总结,CSDN小冰原创

    /** * 作者:David Zheng on 2015/11/7 15:38 * *  网站:http://www.93sec.cc * *  微博:http://weibo.com/mcxiaob ...

  4. 利用分块传输吊打所有WAF--学习笔记

    在看了bypassword的<在HTTP协议层面绕过WAF>之后,想起了之前做过的一些研究,所以写个简单的短文来补充一下文章里“分块传输”部分没提到的两个技巧. 技巧1 使用注释扰乱分块数 ...

  5. Linux—账号管理及命令使用详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在Linux系统中,我们常常会看到目录或文件的所属关系: [root@linux01 ~]# ll -d test.sh -rw ...

  6. 推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架

    一个新学WPF的IT老鸟,肝了2个月做了这么一个WPF企业级开发框架,站长clone学习,觉得甚是不错.这是一个使用了Prism搭建的插件式框架,封装了DataGrid的使用,使整个框架子模块简单易学 ...

  7. 手把手教你 在Pytorch框架上部署和测试 关键点人脸检测项目DBFace,成功实现人脸检测效果

    这期教向大家介绍仅仅 1.3M 的轻量级高精度的关键点人脸检测模型DBFace,并手把手教你如何在自己的电脑端进行部署和测试运行,运行时bug解决. 01. 前言 前段时间DBFace人脸检测库横空出 ...

  8. C008:输入显示日期

    代码: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int day,month,year; do{ pri ...

  9. Java使用数据库连接池连接Oracle数据库

    第一步:导入tomcat\lib 下的一个tomcat-dbcp.jar包第二步:在web\META-INF下新建一个context.xml文件,文件内容如下: <?xml version=&q ...

  10. 使用 Promise 实现任务队列发送请求,实现最大请求数目限制

    核心 设置最大请求数量,当前请求数量,待执行队列 调用时,创建一个新任务,然后判断是否达到最大请求数量,若达到则将任务追加到待执行队列,否则,则直接执行该任务.并返回Promise 创建任务时,需要返 ...