当前位置: 首页 > news >正文

两种变量初始化方法的区别

1. CarriageEntity carriageEntity = new CarriageEntity()和 = null的区别

1.1  CarriageEntity carriageEntity = new CarriageEntity();

  • 初始化:这行代码创建了一个新的 CarriageEntity 对象,并将其引用赋值给 carriageEntity 变量。
  • 对象状态:此时 carriageEntity 指向一个有效的对象实例,可以直接使用,比如调用该对象的方法或访问其属性。
  • 示例
CarriageEntity carriageEntity = new CarriageEntity();
carriageEntity.setId(1L);
  • 这里你可以直接调用 carriageEntity 对象的方法或设置属性。

1.2  CarriageEntity carriageEntity = null;

  • 初始化:这行代码将 carriageEntity 变量初始化为 null,即该变量没有指向任何对象。
  • 对象状态:此时 carriageEntity 不指向任何对象,如果尝试调用该变量的方法或访问其属性,将会导致 NullPointerException
  • 示例
CarriageEntity carriageEntity = null;
carriageEntity.setId(1L);  // 这将抛出 NullPointerException

1.3 主要区别

  • 对象创建new CarriageEntity() 实际上创建了一个 CarriageEntity 对象并分配内存,而 null 只是一个占位符,表示当前变量没有指向任何对象。
  • 安全性:初始化为 new CarriageEntity() 后可以直接使用,不会有 NullPointerException 的风险。而初始化为 null 时,需要在使用前确保 carriageEntity 已被赋值为有效的对象,否则会抛出异常。
  • 适用场景
    • new CarriageEntity();:适用于你在声明变量时就已经确定要创建对象实例的场景。
    • null;:适用于变量在声明时不确定是否需要立即创建对象,或者可能稍后通过某种逻辑进行赋值的场景。

例如,你可能在后续代码中通过某种条件判断来决定是否创建或赋值一个 CarriageEntity 对象,这时候初始化为 null 更为合适。

2. carriageEntity == null 和 ObjectUtil.isEmpty(carriageEntity)有什么区别

2.1 carriageEntity == null

  • 用途:用于判断对象是否为 null
  • 作用:直接检查 carriageEntity 是否为 null,即该变量是否指向任何对象。
  • 示例:
if (carriageEntity == null) {// carriageEntity 是 null
}
  • 结果:如果 carriageEntity 未被赋值或明确地设置为 null,此条件将返回 true

2.2  ObjectUtil.isEmpty(carriageEntity)

  • 用途:这个方法是 Hutool 工具包中的一个方法,通常用于检查对象是否为空。
  • 作用:它不仅仅判断是否为 null,而是根据对象的类型来判断“空”的含义:
    • 对于字符串,检查是否为空字符串。
    • 对于集合或数组,检查是否为空集合或空数组。
    • 对于一般对象,通常等价于 null 检查,但具体实现可能会根据对象类型进行更多的判断。
  • 示例
if (ObjectUtil.isEmpty(carriageEntity)) {// carriageEntity 是空的 (可能是 null)
}

结果:如果 carriageEntitynull,这个方法通常也会返回 true,但在某些情况下(如集合或数组)会检查更多条件。

3. 两种判空方法与两种初始化的作用结果

  • 3.1 CarriageEntity carriageEntity = new CarriageEntity();

    • 对象状态:创建了一个新的 CarriageEntity 实例,carriageEntity 变量指向该实例。此时 carriageEntity 不为 null,可以直接使用该对象的方法和属性。
    • carriageEntity == null 的结果:返回 false,因为 carriageEntity 已经被初始化为一个有效的对象实例。
    • ObjectUtil.isEmpty(carriageEntity) 的结果:通常会返回 false,因为该变量不是 null,并且是一个非空的对象。
  • 3.2 CarriageEntity carriageEntity = null;

    • 对象状态carriageEntity 被初始化为 null,此时变量不指向任何对象。如果尝试使用该变量,会导致 NullPointerException
    • carriageEntity == null 的结果:返回 true,因为 carriageEntitynull
    • ObjectUtil.isEmpty(carriageEntity) 的结果:通常也会返回 true,因为 carriageEntitynull

4. 总结

  • carriageEntity == null:是最基本的判断对象是否为 null 的方法。
  • ObjectUtil.isEmpty(carriageEntity):提供了更通用的“空”检查,适用于更多类型的对象,但对一般对象而言通常等同于 null 检查。
  • new CarriageEntity():会创建对象,之后的 null 检查和 isEmpty 检查都会返回 false
  • null 初始化:变量未指向任何对象,null 检查和 isEmpty 检查都会返回 true

两种方式主要在于是否创建和分配了内存给 carriageEntity,并影响后续对该变量的使用。

http://www.lryc.cn/news/428115.html

相关文章:

  • 群晖把硬盘共享给win10(虚拟机或物理机)的两种办法
  • Java-Web面试题汇总
  • 数字化技术分别有哪些,数字化技术特点和优势是什么?
  • 微服务CI/CD实践(一)环境准备及虚拟机创建
  • 【SpringBoot】优化慢启动应用的用户体验
  • String str=“i“ 与 String str=new String (“i“) 一样吗?
  • 【数据结构】二叉树链式结构的实现
  • 如何有效找到目标客户群体?
  • 机器学习-混淆矩阵
  • 数据结构----栈
  • STL六大组件
  • 【机器学习】CNN的数学基础
  • 最小路径和[中等]
  • 【题库】——数组 小鱼比可爱
  • 基于飞腾平台的Hbase的安装配置
  • 【springboot】springboot接口参数全局解密,解决request内容修改后如何重新设置回去的问题
  • yml基本语法
  • 橙色简洁大气体育直播自适应模板赛事直播门户自适应网站源码
  • 【启明智显技术分享】工业级HMI芯片Model系列GUI合成到项目中的指南
  • 开源服务器运维工具1Panel
  • 新版本源2.0大模型发布:Yuan2-2B-July-hf
  • 用python生成GIF动图—用于博客插图或封面等
  • [RCTF2019]draw
  • 设计模式 - 责任链模式
  • jpg怎么转换成pdf?6个简单方法,实现jpg转换成pdf
  • ptrade排坑笔记——使用量化交易的时候有报错提示!
  • C#-MemoryMarshal
  • Java并发编程的艺术
  • 华为 OLT 添加 ONU 配置 (SNMP管理模式)
  • 【JavaScript】[]和{} 的转换