要搞清楚对象和对象的引用
2019独角兽企业重金招聘Python工程师标准>>>
有很多程序员还在写这样的代码
User user = new User();
user = userDao.selectUserById(id);
user.getName();
他的理由是,为了防止执行user.getName()时发生空指针异常,所以先new出一个对象,这样即使从数据库里查询不到对应id的用户,程序也不会报错。
这个想法真的很神奇,而事实是第一句代码是废话,你首先创建了一个对象new User()我们称它为用户A,然后创建了一个对象的引用User user指向用户A,紧接着查询数据库userDao.selectUserById(id)返回另一个对象用户B,最后让对象的引用user重新指向了用户B,用户B如果null,第三句空指针异常。
转载于:https://my.oschina.net/fangwei/blog/717255
要搞清楚对象和对象的引用相关推荐
- 【C++引用超详细笔记, 引用、指针和值传递的汇编级辨析,对象、继承和引用】
文章目录 引用变量 1. 什么是引用.如何创建一个引用变量? 2. 引用的具体使用方法 2.1 引用做函数的形参 2.2 引用参数的const用法 左值.右值是什么? 2.3 结构体的引用 2.4 引 ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( MAT 工具使用 | 最大对象 | 类实例个数 | 引用与被引用 | GC Roots 最短链 )
文章目录 一. 内存中最大的对象 二. 查看每个类的对象实例的个数 三. 查看对象的引用与被引用 四. 查看对象到 GC Roots 的最短距离 1. 选择 Merge Shortest Paths ...
- 为什么static成员的类型可以是类本身?又为什么非static成员被限定声明为其自身类对象的指针或引用?...
看到<C++ Primer>中的一句话,才想起分析一下这个问题:"static 数据成员的类型可以是该成员所属的类类型.非 static 成员被限定声明为其自身类对象的指针或引用 ...
- Java中ListE对象赋值问题(引用传递和值传递)
Java中List<E>对象赋值操作问题 业务需求是:取2个集合中的交集对象并返回.如下代码,busMap中key值和stocks中Map中的key值相等的对象则返回继续操作,也就是说剔除 ...
- Java对象的四种引用方式
本文会按照以下思路进行: (1)Java的四种对象引用的基本概念 (2)四种对象引用的差异对比 (3)对象可及性的判断以及与垃圾回收机制的关系 (4)引用队列ReferenceQueue的介绍 (5) ...
- 防止NSTimer和调用对象之间的循环引用
防止NSTimer和调用对象之间的循环引用 @interface NSTimer (EOCBlocksSupport)+ (NSTimer *)eoc_scheduledTimerWithTimeIn ...
- Java对象的四种引用
前言 在JDK1.2之前,创建的对象只有在处于可触及(reachable)的状态下,才能被程序使用.也就是说,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.垃圾回收器一旦发现这些无用对象, ...
- 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还"存活"着,哪些对 ...
- 深入理解JVM(三)——JVM之判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
本文转载自https://blog.csdn.net/ochangwen/article/details/51406779 本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Ja ...
最新文章
- J2SE基础夯实系列之数组
- 递推水题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table
- webpack 配置简单说几句 ?
- python安装第三方库-Python安装第三方库的3种方法
- 【MATLAB】进阶绘图 ( Bar 条形图 | bar 函数 | bar3 函数 | Bar 条形图样式 | 堆叠条形图 | 水平条形图 | barh 函数 )
- HDU 3549 Flow Problem (网络流板子)
- 那些容易遗忘的web前端问题
- android 结束if循环_(第五讲)if 分支语句和 while 循环
- 请说说你对标签语义化的理解?
- Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.10:proguard (default) on project
- Android自定义printf/printk/ALOGE函数LOG_TAG
- ESD二极管,SOT-23封装型号大全
- appium 常用键盘操作
- 合唱队——最少出列人数
- 大数据入门看哪些书比较好
- # PPT进阶——文字环绕
- Win7从文件服务器复制文件速度慢问题处理
- 计算机用户名如何保存,电脑的用户名和密码怎么查看
- 编程该学什么以及vc++一些心得
- 《网络安全审查办法》将影响我们什么?
热门文章
- 学习笔记Hive(四) —— Hive应用(2)—— Hive导入及导出数据
- 为什么在进程中还需要线程呢?
- 离合器二自由度扭转振动线性系统仿真分析
- educational round 前缀和_总结分析634个以re为前缀的单词得出了re为前缀组合单词意思规律
- mysql性能分析工具profiling_Mysql系列(十)—— 性能分析工具profiling
- 数据结构实验之链表七:单链表中重复元素的删除
- 代码回滚:Reset、Checkout、Revert 的选择
- 简化软件集成:一个Apache Camel教程
- Vue.js 组件 处理边界情况
- 一次生产事故的优化经历