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

要搞清楚对象和对象的引用相关推荐

  1. 【C++引用超详细笔记, 引用、指针和值传递的汇编级辨析,对象、继承和引用】

    文章目录 引用变量 1. 什么是引用.如何创建一个引用变量? 2. 引用的具体使用方法 2.1 引用做函数的形参 2.2 引用参数的const用法 左值.右值是什么? 2.3 结构体的引用 2.4 引 ...

  2. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  3. 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( MAT 工具使用 | 最大对象 | 类实例个数 | 引用与被引用 | GC Roots 最短链 )

    文章目录 一. 内存中最大的对象 二. 查看每个类的对象实例的个数 三. 查看对象的引用与被引用 四. 查看对象到 GC Roots 的最短距离 1. 选择 Merge Shortest Paths ...

  4. 为什么static成员的类型可以是类本身?又为什么非static成员被限定声明为其自身类对象的指针或引用?...

    看到<C++ Primer>中的一句话,才想起分析一下这个问题:"static 数据成员的类型可以是该成员所属的类类型.非 static 成员被限定声明为其自身类对象的指针或引用 ...

  5. Java中ListE对象赋值问题(引用传递和值传递)

    Java中List<E>对象赋值操作问题 业务需求是:取2个集合中的交集对象并返回.如下代码,busMap中key值和stocks中Map中的key值相等的对象则返回继续操作,也就是说剔除 ...

  6. Java对象的四种引用方式

    本文会按照以下思路进行: (1)Java的四种对象引用的基本概念 (2)四种对象引用的差异对比 (3)对象可及性的判断以及与垃圾回收机制的关系 (4)引用队列ReferenceQueue的介绍 (5) ...

  7. 防止NSTimer和调用对象之间的循环引用

    防止NSTimer和调用对象之间的循环引用 @interface NSTimer (EOCBlocksSupport)+ (NSTimer *)eoc_scheduledTimerWithTimeIn ...

  8. Java对象的四种引用

    前言 在JDK1.2之前,创建的对象只有在处于可触及(reachable)的状态下,才能被程序使用.也就是说,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.垃圾回收器一旦发现这些无用对象, ...

  9. 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用

    本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还"存活"着,哪些对 ...

  10. 深入理解JVM(三)——JVM之判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用

    本文转载自https://blog.csdn.net/ochangwen/article/details/51406779 本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Ja ...

最新文章

  1. J2SE基础夯实系列之数组
  2. 递推水题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table
  3. webpack 配置简单说几句 ?
  4. python安装第三方库-Python安装第三方库的3种方法
  5. 【MATLAB】进阶绘图 ( Bar 条形图 | bar 函数 | bar3 函数 | Bar 条形图样式 | 堆叠条形图 | 水平条形图 | barh 函数 )
  6. HDU 3549 Flow Problem (网络流板子)
  7. 那些容易遗忘的web前端问题
  8. android 结束if循环_(第五讲)if 分支语句和 while 循环
  9. 请说说你对标签语义化的理解?
  10. Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.10:proguard (default) on project
  11. Android自定义printf/printk/ALOGE函数LOG_TAG
  12. ESD二极管,SOT-23封装型号大全
  13. appium 常用键盘操作
  14. 合唱队——最少出列人数
  15. 大数据入门看哪些书比较好
  16. # PPT进阶——文字环绕
  17. Win7从文件服务器复制文件速度慢问题处理
  18. 计算机用户名如何保存,电脑的用户名和密码怎么查看
  19. 编程该学什么以及vc++一些心得
  20. 《网络安全审查办法》将影响我们什么?

热门文章

  1. 学习笔记Hive(四) —— Hive应用(2)—— Hive导入及导出数据
  2. 为什么在进程中还需要线程呢?
  3. 离合器二自由度扭转振动线性系统仿真分析
  4. educational round 前缀和_总结分析634个以re为前缀的单词得出了re为前缀组合单词意思规律
  5. mysql性能分析工具profiling_Mysql系列(十)—— 性能分析工具profiling
  6. 数据结构实验之链表七:单链表中重复元素的删除
  7. 代码回滚:Reset、Checkout、Revert 的选择
  8. 简化软件集成:一个Apache Camel教程
  9. Vue.js 组件 处理边界情况
  10. 一次生产事故的优化经历