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 ...
 
随机推荐
- Java开源连接池c3p0的基本用法
			
前言:其实c3p0只是一个实现了javax.sql 接口 DataSource的一个工具集,使用c3p0可以帮我们管理宝贵的Connection资源,无须我们去创建连接(免去每次配置数据库驱动,url ...
 - [2017-08-16]ABP系列——QuickStartB:正确理解Abp解决方案的代码组织方式、分层和命名空间
			
本系列目录:Abp介绍和经验分享-目录 介绍ABP的文章,大多会提到ABP框架吸收了很多最佳实践,比如: 1.N层 (复用一下上篇的图) 展现层(Personball.Demo.Web):asp.ne ...
 - css  找到隐藏元素个数
			
<form> <input type="hidden" name="email" /> <input type=" ...
 - Linux平台 Oracle 12cR2 RAC安装Part1:准备工作
			
Linux平台 Oracle 12cR2 RAC安装Part1:准备工作 一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二 ...
 - 谈谈.NET,Java,php
			
开通博客后,一直都是转点别的朋友写的有意思的博文,今天我来写我在博客园的第一篇文章,说的不对的地方请你指正.希望本文能为一些准备学习编程的朋友有一点帮助. 开发桌面程序一直都是c语言,c++的天下,因 ...
 - C# 获取exe、dll中的图标,支持获取256x256分辨率
			
在网上找过许多文章,都没有成功获取过大图标,只能获取最大32x32.最后自己尝试了相关的windows api,终于找到一个可用的. 主要用到的C++的PrivateExtractIcons函数,具体 ...
 - shell下office、html、pdf文档互转方法
			
分类: 后台开发 版权声明:本文为博主原创文章,未经博主允许不得转载. OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexp ...
 - Web云笔记--CSS
			
CSS CSS CSS Web自学第二阶段之CSS 参考资料:<Head First HTML&CSS>(中文第二版)(美国)弗里昂ISBN:9787508356464 中国电力出 ...
 - MPLS VPN随堂笔记2
			
深入理解ospf 理解MPLS VPN 中对OSPF 层次化设计的补充 supper backbone area 2:理解MPLS VPN 中OSPF 的区域设计概念 3:理解MPLS VPN 中OS ...
 - 关于selenium IDE找不到元素
			
selenium IDE ,明明存在元素,却找不到元素 ,报错Element not found 标签: seleniumselenium IDE自动化测试ide 2016-10-31 13:25 1 ...