引用的理解(面对对象)
来源:互联网 发布:网络兼职诈骗怎么判刑 编辑:程序博客网 时间:2024/06/05 15:28
创建对象就是创建引用指针,指向创建的对象。
声明对象,但是没有创建对象,那么是空指针。
声明一个对象,但是没有创建新的对象,而是引用或者说应用某一个已存在的对象,那么这个声明的应用指向该对象;或者说我们拿到这个对象。
我们可以创建多个声明,引用同一个对象,那么这样我们可以实现对象数据的同步,但是也要注意数据的污染。
在纯面对对象的编程里,除了基本的数据类型(int char boolean double long short等)其他数据类型都是引用类型,如string,list,map等。
那么我们在数据存储的时候,存储引用类型,那么一定要创建新的引用对象进行存储,否则,存储都是同一个引用对象,那么在数据结构里面有一个操作引用的修改,会导致所有的存储引用都得到修改。(数据污染)
例如:
创建一个list<bean>,在获取不同的数据对象的时候,统一都是list<bean>指向它,来拿到数据。接着在每拿到数据的时候,将list<bean>存储到一定数据结构中。在存储的时候,都打印存储的数据结构大小。(这样我们可以看到我们每一次存储的数据大小,我们看到打印出来的结果,让我们确信我们存储的数据没有问题)
但是当我们将最后一条list<bean>放入到数据结构体中,然后输出所有的数据结构中的数据,我们发现我们存储的数据都是一样的,都是我们最后存储的最后的list<bean>数据。
这是为什么呢?
因为我们存储的都是同一个list<bean>引用对象,在最后一次拿到list<bean>数据,我们也就是把list<bean>赋予最后一条数据,那么存储的数据结构中的同一的list<bean>引用(数据结构中存储的所有引用都是list<bean>)都指向我们最后一次取回的数据,所有数据结构中都是存储的最后拿取的数据。
引用本质是指针,这样方便我们操作对象,保持数据同步。但是也会有时导致我们造成数据的污染,或者操作错误。
作为初级的编程人员,尤其面对对象编程,偶尔会遇到,数据异常。具体现象:明明自己存储的数据是a,取出来发现是b,很奇怪。
那么这一定是数据污染,数据污染!莫名的数据读写有误,一定是数据污染。
一定在别的地方引用了 这个对象而且操作了数据。那么只要好好排查什么地方引用了对象或者指向了这个数据对象,在执行流程中进行了数据操作,便可以纠正数据污染。
- 引用的理解(面对对象)
- [Java学习] 对Java的面对对象编程中对象和引用以及内部类的理解
- 黑马程序员_面对对象的理解
- 对JavaScript面对对象#继承的理解
- 面对对象和面对过程的理解
- 说说我对面对对象的理解
- 对于面对对象和prototype的理解
- Javascript的面对对象的理解 【上】(prototype,函数和对象等概念)
- Javascript的面对对象的理解 【下】(prototype的使用)
- Java学习----day2——(4)面对对象编程的概念理解
- JAVA初学:关于“面对对象”的一些理解与感悟
- java面对对象的三大特征以及理解
- php中引用&的真正理解-变量引用、函数引用、对象引用(转)
- 理解Java的引用对象
- 面对对象的javascript
- 面对对象的封装
- 面对对象的继承
- 面对对象的特征
- 基础知识之事务
- php include 的妙用
- 二级C语言复习8
- 快速排序法
- 数据库的备份及恢复
- 引用的理解(面对对象)
- 【洛谷P1531】I Hate It
- sublime常用快捷键
- [2016年9月20日] 今天阿里云服务器挂了,怀疑被人黑了??
- Linux之dd命令详解
- Spring3.1 整合hibernate4 简单设置
- 移动端样式重置
- 算法:递归
- 安装新版xampp后apache无法启动提示:Apache Service detected with wrong path解决方案