Java中的对象和引用
《Java编程思想》中有一段关于对象的说法:
“按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词。”
简单来说,对象就是类的实例。举个栗子:“人类”包括了所有的人,在面向对象里,“人类”就是一个类,而人类中的某个人,比如特朗普,他就是人类的实例,他就是一个对象。
还是《Java编程思想》中关于引用的说法,毕竟是经典的Java书籍:
“每种编程语言都有自己的数据处理方式。有些时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C/C++里的指针)来操作对象。所有这些在 Java 里都得到了简化,一切都被视为对象。因此,我们可采用一种统一的语法。尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的“引用”(reference)。”
1 Student student;
2 student = new Student("路飞");
Java在创建对象的时候是通过关键字new来进行的,结果是在堆中创建了一个新的对象。所以这两行中 new Student("路飞")才是创建对象的操作,那么,student并不是一个对象,而是一个指向对象的引用,这个指向的对象是通过new Student("路飞")来创建的。
一个引用可以指向多个对象,而一个对象可以被多个引用所指向
举例:
Student student;
student = new Student("娜美");
student = new Student("索隆"); Student student1 = new Student("山治");
Student student2 = student1;
分析:引用student可以指向多个不同的对象,指向的对象通过new来创建;
而通过new Student("山治")创建的对象可以被student1和student2同时指向。
来一个前几天遇到的(用学生班级进行模拟,与遇到的类似)
@Test
public void objectTest() {
List<Student> students = new ArrayList<Student>();
students.add(new Student("路飞"));
Class_ class_ = new Class_();
class_.setStudents(students); List<Student> s = class_.getStudents();
s.add(new Student("山治"));
System.out.println();
}
说明:Class_类表示的是班级类,Student表示的是学生类,两者之间的关系:一个班级中有多个学生,所以Class_中含有变量students: private List<Student> students; (设置好get和set方法,再简单不过了)
对上面的测试代码进行调试:

可以看出:students, s, 还有班级类中的学生,指向的都是相同的对象,对这几个引用进行操作,会同步,因为都指向的是相同的对象嘛。
Java中的对象和引用的更多相关文章
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- java中的对象 方法 引用 等一些抽象的概念是什么意思呢?
2020-03-14 最近这一段时间有点忙,好久都没有更新博客了,之后我会一直坚持下去的,和大家一同进步的. 这段时间一直在学java,相信刚开始学习java的小白,刚开始接触那么些抽象的概念一定和我 ...
- Java中值传递和引用传递的概念
很多书中都提到了在Java中只存在值传递,但是今天在一个NanoHTTPD的源码中看到这样一段: if (qmi >= 0) { decodeParms(uri.substring(qmi + ...
- Java中String对象的不可变性
首先看一个程序 package reverse; public class Reverse { public static void main(String[] args) { String c1=n ...
- JAVA中MESSAGEBOX,静态类直接引用
原文:JAVA中MESSAGEBOX,静态类直接引用 package cisdi.mes.wrm.mcode.serviceImpl; import javax.persistence.Entity; ...
- JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例
简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用) ...
- Java中的基本类型和引用类型变量的区别
Java中的基本类型和引用类型变量的区别 学了一年多,说实话你要我说这些东西我是真说不出来是啥意思 基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...
- “吃人”的那些Java名词:对象、引用、堆、栈
记得中学的课本上,有一篇名为<狂人日记>课文:那时候根本理解不了鲁迅写这篇文章要表达的中心思想,只觉得满篇的“吃人”令人心情压抑:老师在讲台上慷慨激昂的讲,大多数的同学同我一样,在课本面前 ...
- Fastjson-fastjson中$ref对象重复引用问题:二
import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; import com.alib ...
随机推荐
- python appium 操作app
下面是一些Python脚本中操作app的用法: 检查app安装情况(返回true/false), driver.is_app_installed(package_name) 安装app driver. ...
- eval浅解
关于eval,你了解多少呢?来看看 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 需要一个参数(string),切必需.要计算的字符串,其中含有要计算的 JavaS ...
- SessionStateMode之Redis共享session
周六的时候用SQL Server来实现session共享,今天下班早就试了下使用Redis来实现session共享.接着上一篇博客,上一篇使用sessionState节点mode="SQLS ...
- 关联本地文件夹到github项目
git init git remote add origin https://自己的仓库url地址 git status git add . git commit -m '[提交内容的描述]' 先 p ...
- Calico 的网络结构是什么?- 每天5分钟玩转 Docker 容器技术(68)
上一节我们部署了 Calico 网络,今天将运行容器并分析 Calico 的网络结构. 在 host1 中运行容器 bbox1 并连接到 cal_net1: docker container run ...
- VIN码识别对汽车行业的应用
汽车VIN码识别: 识别系统到底是什么呢?来~大家往下看,这是易泊时代科技有限公司通过多年的ocr识别技术,与汽车Vin码识别/车架号识别系统相结合,针对机动车配置参数等信息的查询及采集而推出的一款V ...
- 十类经典office实用技巧
IT工程师不得不会的职场office软件(不是金山WPS),其中ppt最重要也最难学的.之前已经另作文分享,本文是word与excel的十个隐藏技能.一.Excel表格计算公式1.求所有数值和:SUM ...
- KKlist团队目录
KKlist团队目录 一.Daily Scrum Meeting[Alpha] 4.22 day one 4.23 day two 4.24 day three 4.25 day four 4.26 ...
- 201521123019 《Java程序设计》第4周学习总结
1. 本章学习总结 2. 书面作业 Q1.注释的应用:使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) Q2.面向对象设计(大作业1-非常重要) 2.1 讲故事 ...
- 201521123110《Java程序设计》第10周学习总结
1. 本周学习总结 2. 书面作业 1.finally 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? finally块中的代码在正常情况下一定会执行,所 ...