两种变量初始化方法的区别
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)
}
结果:如果 carriageEntity
是 null
,这个方法通常也会返回 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
,因为carriageEntity
是null
。ObjectUtil.isEmpty(carriageEntity)
的结果:通常也会返回true
,因为carriageEntity
是null
。
- 对象状态:
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 变量。对象状态ÿ…...

群晖把硬盘共享给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的安装配置
【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…...

【springboot】springboot接口参数全局解密,解决request内容修改后如何重新设置回去的问题
文章目录 核心思路spring&servelt基础核心接口类核心代码 body解密核心原理讲解get解密核心原理讲解get query请求讲解get pathVariables请求讲解 总结 本文不仅介绍了body内容修改后如何传递,也介绍了get请求 在修改内容后如何继续传递。 【原创作者 csdn: 孟秋…...
yml基本语法
YAML(YAML Ain’t Markup Language)是一种简洁且易读的数据序列化格式,常用于配置文件。Spring Boot 中的 application.yml 文件使用 YAML 来配置应用程序的属性。 YAML 基本语法 1. 键值对 基本的键值对表示形式为:key: value…...

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

【启明智显技术分享】工业级HMI芯片Model系列GUI合成到项目中的指南
在工业自动化、智能终端HMI、车载仪表盘等领域,高性能的HMI(人机界面)芯片是不可或缺的核心组件。启明智显推出的Model系列(如Model3C、Model3、Model4)HMI芯片,以其卓越的性能和广泛的应用领域,…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...