当前位置: 首页 > 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,并影响后续对该变量的使用。

相关文章:

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

1. CarriageEntity carriageEntity new CarriageEntity()和 null的区别 1.1 CarriageEntity carriageEntity new CarriageEntity(); 初始化:这行代码创建了一个新的 CarriageEntity 对象,并将其引用赋值给 carriageEntity 变量。对象状态&#xff…...

群晖把硬盘共享给win10(虚拟机或物理机)的两种办法

1. 通过SMB共享 NAS地址:192.168.3.100 打开“此电脑”,在win10地址栏输入 \192.168.3.100\video,提示输入用户名、密码。在video文件夹右击,点击“映射网络驱动器” 在win10电脑上,复制文件到T盘上,在T盘…...

Java-Web面试题汇总

一、TCP 和 UDP 的区别 在网络通信中,TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是两种常见的协议,它们在多个方面存在显著差…...

数字化技术分别有哪些,数字化技术特点和优势是什么?

​随着企业数字化进程的加速,人工智能、工业互联网、低代码等底层技术正全面重塑企业运营生产体系,推动新的生产要素、研发范式和商业模式的建立。 这个变革过程不仅是对原有制造体系的颠覆,而且会影响各行各业的所有细分行业和产业链价值链…...

微服务CI/CD实践(一)环境准备及虚拟机创建

微服务CI/CD实践系列: 微服务CI/CD实践(一)环境准备及虚拟机创建 微服务CI/CD实践(二)gitlabs部署 微服务CI/CD实践(三)nexus3部署 微服务CI/CD实践(四)数据库,redis,n…...

【SpringBoot】优化慢启动应用的用户体验

通过深入分析SpringBoot中WebServer的启动流程,插入自定义的Loading页面展示逻辑,优化软件使用时的用户体验。 背景 Java本身的特点,再加上开发人员能力差,软件开发工程化程度低等等问题,经过一段时间的迭代之后&…...

String str=“i“ 与 String str=new String (“i“) 一样吗?

String str"i" 与 String strnew String ("i") String str"i" 这种形式声明了一个 String 对象,其中 "i" 字符串字面量直接赋值给 str。在 Java 中,字符串字面量会自动放入字符串常量池中,这是一个…...

【数据结构】二叉树链式结构的实现

前置声明:在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,为了降低大家学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉…...

如何有效找到目标客户群体?

在激烈的市场竞争中,找到并锁定目标客户群体是企业成功的关键。以下是几种有效的策略,帮助您精准定位并吸引目标客户。 1. 明确市场定位与客户画像 首先,企业需要明确市场定位,并绘制详细的客户画像,包括年龄、性别、…...

机器学习-混淆矩阵

文章目录 一、混淆矩阵1.混淆矩阵简介2.混淆矩阵图列 二、混淆矩阵指标1. 准确率(Accuracy)2. 精确率(Precision)3. 召回率(Recall)4. F1分数(F1 Score) 三、总结 一、混淆矩阵 1.混…...

数据结构----栈

一丶概念 只能在一端进行插入和删除操作的线性表(又称为堆栈),进行插入和删除操作的一端称为栈顶,另一端称为栈底 二丶特点 先进后出 FILO first in last out 后进先出 LIFO last in first out 三丶顺序栈 逻辑结构&…...

STL六大组件

STL(Standard Template Library,标准模板库)是C标准库的一部分,提供了丰富且高效的数据结构和算法。STL主要由6大组件构成,分别是容器、算法、迭代器、适配器、仿函数和空间配置器。 容器(Containers&#…...

【机器学习】CNN的数学基础

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 CNN的数学基础1. 引言2. 卷积运算2.1 连续卷积2.2 离散卷积2.3 互相关 3. 激活函…...

最小路径和[中等]

优质博文:IT-BLOG-CN 一、题目 给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[…...

【题库】——数组 小鱼比可爱

#include<bits/stdc.h> using namespace std; int main() {int n,m,i;cin>>n;int arr[n]; for(i0;i<n;i) {int count 0;cin>>arr[i];for(mi;m>0;m--){if(arr[i]>arr[m])count;} cout<<count<<" "; } return 0; }...

基于飞腾平台的Hbase的安装配置

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…...

【springboot】springboot接口参数全局解密,解决request内容修改后如何重新设置回去的问题

文章目录 核心思路spring&servelt基础核心接口类核心代码 body解密核心原理讲解get解密核心原理讲解get query请求讲解get pathVariables请求讲解 总结 本文不仅介绍了body内容修改后如何传递&#xff0c;也介绍了get请求 在修改内容后如何继续传递。 【原创作者 csdn: 孟秋…...

yml基本语法

YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种简洁且易读的数据序列化格式&#xff0c;常用于配置文件。Spring Boot 中的 application.yml 文件使用 YAML 来配置应用程序的属性。 YAML 基本语法 1. 键值对 基本的键值对表示形式为&#xff1a;key: value…...

橙色简洁大气体育直播自适应模板赛事直播门户自适应网站源码

源码名称&#xff1a;酷黑简洁大气体育直播自适应模板赛事直播门户网站 源码开发环境&#xff1a;帝国cms 7.5 安装环境&#xff1a;phpmysql 带采集&#xff0c;可以挂着电脑上自动采集发布&#xff0c;无需人工操作&#xff01; 橙色简洁大气体育直播自适应模板赛事直播门户…...

【启明智显技术分享】工业级HMI芯片Model系列GUI合成到项目中的指南

在工业自动化、智能终端HMI、车载仪表盘等领域&#xff0c;高性能的HMI&#xff08;人机界面&#xff09;芯片是不可或缺的核心组件。启明智显推出的Model系列&#xff08;如Model3C、Model3、Model4&#xff09;HMI芯片&#xff0c;以其卓越的性能和广泛的应用领域&#xff0c…...

终极字体合并方案:如何一键解决游戏字体兼容性难题

终极字体合并方案&#xff1a;如何一键解决游戏字体兼容性难题 【免费下载链接】Warcraft-Font-Merger Warcraft Font Merger&#xff0c;魔兽世界字体合并/补全工具。 项目地址: https://gitcode.com/gh_mirrors/wa/Warcraft-Font-Merger 还在为游戏中文字显示不全而烦…...

让任意窗口保持置顶:AlwaysOnTop提升Windows多任务效率全指南

让任意窗口保持置顶&#xff1a;AlwaysOnTop提升Windows多任务效率全指南 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在数字化工作环境中&#xff0c;我们经常需要同时处理多…...

别再手写 CRUD 了!DeepSeek + 速达荣耀,AI 一把生成整套 ERP 前后端

还在日复一日写 ERP 表单、列表、分页、审核逻辑&#xff1f;同样的单据结构、同样的状态流转、同样的权限校验&#xff0c;手写一遍又一遍。今天直接上实战&#xff1a;DeepSeek AI 编程 速达荣耀开源架构自然语言一句话&#xff0c;自动生成 Vue3 前端 Java 后端整套代码&a…...

突破QQ音乐格式限制:QMCDecode全平台解决方案

突破QQ音乐格式限制&#xff1a;QMCDecode全平台解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换结果存…...

Krita AI Diffusion终极指南:从零开始掌握AI绘画插件

Krita AI Diffusion终极指南&#xff1a;从零开始掌握AI绘画插件 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.…...

Swin2SR小白快速上手:无需代码,在线修复低清图片

Swin2SR小白快速上手&#xff1a;无需代码&#xff0c;在线修复低清图片 1. 什么是Swin2SR图像修复技术 Swin2SR是一种基于Swin Transformer架构的AI图像超分辨率技术&#xff0c;它能将低质量图片无损放大4倍。与传统的插值放大方法不同&#xff0c;Swin2SR能够"理解&q…...

C语言短路求值原理与应用解析

1. C语言中的短路现象解析作为一名在嵌入式领域摸爬滚打多年的工程师&#xff0c;我经常看到初学者在逻辑运算上栽跟头。今天我们就来聊聊C语言中这个看似简单却暗藏玄机的特性——短路求值&#xff08;Short-circuit evaluation&#xff09;。短路求值源自布尔代数&#xff0c…...

可重构(Reconfigurable)智能超表面天线设计——1【PIN管选型】

此系列为可重构智能超表面设计过程中的步骤及注意事项&#xff0c;是笔者在设计了一款可重构透射阵列天线之后总结得到的经验教训。希望可以帮到刚接触该领域的同学们。 1、PIN二级管通断原理&#xff08;简要&#xff09; 在超表面上加载PIN二极管&#xff0c;本质是通过调节…...

UABEA:Unity游戏资源编辑与分析的终极解决方案

UABEA&#xff1a;Unity游戏资源编辑与分析的终极解决方案 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 在Unity游戏开发和模组制作领域&#xff0c;处理Asset Bundle资源文件是每个开发者都会面临的…...

MOSFET栅极电阻选型实战:从波形分析到最佳阻值确定(附IRF540实测数据)

MOSFET栅极电阻选型实战&#xff1a;从波形分析到最佳阻值确定&#xff08;附IRF540实测数据&#xff09; 在电力电子设计中&#xff0c;MOSFET的栅极电阻选型往往被工程师视为"小问题"&#xff0c;但实际调试中却可能成为影响系统稳定性的关键因素。记得去年参与一款…...