`

要搞清楚对象和对象的引用

 
阅读更多

有很多程序员还在写这样的代码

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,第三句空指针异常。

4
1
分享到:
评论

相关推荐

    Python中对象的引用与复制代码示例

    为了理解这个问题,有个基本概念需要搞清楚。 Python没有「变量」,我们平时所说的变量其实只是「标签」,是引用。 python中,”a=b”表示的是对象a引用对象b,对象a本身没有单独分配内存空间(重要:不是复制!),它...

    每个Java初学者都应该搞懂的六个问题

    对于Java初学者来说,理解和掌握一些基本概念至关重要,以下就是六个每个Java学习者都应该搞清楚的问题: ### 问题一:我声明了什么? 在Java中,声明一个变量如`String s = "Hello world!";`实际上是在声明一个...

    QuadTree四叉树实现代码 C#

    当需要检查两个对象是否相交时,四叉树允许我们快速过滤掉不可能相交的区域和对象,从而提高效率。对于大型、动态的游戏场景,四叉树是实现高效碰撞检测的关键技术。 总之,这个C#实现的四叉树代码提供了创建、维护...

    JAVA初级概念学习

    9. this关键字:this指代当前对象实例,常用于区分成员变量和局部变量,或者在同一个类的不同方法间引用当前对象。 10. static修饰符:static用于创建类级别的变量和方法,它们不属于类的任何实例,而是共享于所有...

    Python函数中参数是传递值还是引用详解

    因此,理解Python中的参数传递方式,必须先搞清楚变量与对象之间的关系。 #### 变量与对象 Python中一切皆为对象。数字、字符串、列表等都是对象。变量则是指向这些对象的引用。当我们将一个值赋给变量时,实际上...

    C#23种设计模式_示例源代码及PDF

    某些情况下,客户 不想 或者不能够直接引用一个对象, 代理对象可以在客户和目标对象直接起到中介的作用。 客户 端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真 正的被代理对象,而 仅仅持有一个被...

    Python中的深拷贝和浅拷贝详解

    要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) 【变量-对象-引用】 在Python中一切都是对象,比如说:3, 3.14, ‘Hello’, [1,2,3,4],{...

    C++ const使用详解

    1. 要大胆的使用 const,这将给你带来无尽的益处,但前提是你必须搞清楚原委。 2. 要避免最一般的赋值操作错误,如将 const 变量赋值。 3. 在参数中使用 const 应该使用引用或指针,而不是一般的对象实例。 4. const...

    一文让你彻底搞清楚javascript中的require、import与export

    在CommonJS中,模块的导出和导入分别通过`module.exports`和`exports`对象完成,它们之间的区别在于`module.exports`是直接设置模块的输出值,而`exports`实际上是`module.exports`的一个快捷引用,如果直接修改`...

    开题答辩.pptx

    * 需要对Model、View、Controller之间的关系搞清楚,使用MVC的原因是为了模型和实现代码之间的彻底分离。 * 需要解决对后台和前台的解耦合问题。 * 需要掌握前端和后端知识的掌握,还要处理好前台和后台的关系。 * ...

    net学习笔记及其他代码应用

    答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 38.abstract class和interface有什么区别? 答: 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为...

    C++中Reference与指针(Pointer)的使用对比

    虽然多数C++程序员对于何时使用reference何时使用pointer 都会有一些直觉,但总还是会有些时候搞不清楚。如果你想要建立一个关于使用reference使用的清晰有理的概念, 又有必要了解到底reference和pointer有什么不同...

    Java 向下转型的意义

    一直搞不清楚向下转型的意义和用途,不清楚其实是不会,那开发的过程肯定也想不到用向下转型。  其实向上转型和向下转型都是很重要的,可能我们平时见向上转型多一点,向上转型也比较好理解。  但是向下转型,会...

    人力资源管理考试《社会研究方法》题库100题含答案(140版).docx

    - **资料审核**:在进行二手资料分析时,“搞清楚文献的作者、编写的时间”属于**资料审核**(B)的一部分。资料审核旨在评估资料的可信度和适用性,包括检查资料来源的可靠性、资料的时效性等。 ### 3. 访谈技巧 - ...

    windows 程序设计

    Microsoft Windows版本3.1是1992年4月发布的,其中包括的几个重要特性是TrueType字体技术(给Windows带来可缩放的轮廓字体)、多媒体(声音和音乐)、对象连结和嵌入(OLE:Object Linking and Embedding)和通用...

    AutoCode代码生成器(JAVA版)

    您是不是因为java的开发和维护繁琐而烦恼,目前政府机关、企业大都要求用java来开发项目,本软件将彻底解决您的后顾之忧,通过本软件的自动生成功能,生成的java代码规范、全部开源,不存在用隐含的内容,全部代码...

    AutoCode代码生成器(ASP.NET版)

    您是不是因为ASP.NET的开发和维护繁琐而烦恼,微软的开发工具更新速度、开发技巧是成多元化的趋势,ASP.NET以其灵活多变的开发模式,深受广大开发人员的喜爱,灵活多变的开发模式有其利的一面,也有其不好的地方,...

Global site tag (gtag.js) - Google Analytics