0

0

java空对象和null的区别_Java空对象与null关键字的区别与联系

月夜之吻

月夜之吻

发布时间:2026-01-31 10:29:25

|

491人浏览过

|

来源于php中文网

原创

Java中没有“空对象”概念,只有null表示引用未指向任何对象;""是真实存在的空字符串实例,二者状态不同必须分开判断,混用会导致NPE或逻辑错误。

java空对象和null的区别_java空对象与null关键字的区别与联系

空对象不是Java语言概念,null才是

Java里没有“空对象”这个语法或运行时概念——只有 null 关键字,表示一个引用不指向任何堆内存中的实例。所谓“空对象”,其实是开发者对某些特殊对象(如空集合、空字符串、自定义的空哨兵对象)的口语化误称,容易引发误解。

例如:String s = "" 创建的是一个真实存在的 String 实例,它在字符串常量池中有地址,能安全调用 equals()length();而 String s = nulls 根本没指向任何对象,调用任何方法都会抛 NullPointerException

为什么 String == "" 和 s == null 必须分开判断

因为它们代表完全不同的状态:一个是“有对象但内容为空”,一个是“连对象都没有”。混用会导致逻辑漏洞或崩溃。

  • s == null 检查的是引用是否为空(中值是否为 null),只能用 ==,不能用 equals()
  • s.equals("") 前必须确保 s != null,否则直接 NPE;更安全写法是 "".equals(s)(把字面量放前面)
  • 如果业务上“未设置”和“明确设为空”需区分(比如表单提交),null 适合表达“未填写”,"" 适合表达“填了但留空”

常见踩坑场景:集合、Optional、JSON反序列化

这些地方最容易混淆“不存在”和“存在但为空”:

立即学习Java免费学习笔记(深入)”;

通义视频
通义视频

通义万相AI视频生成工具

下载
  • List list = null vs List list = new ArrayList():前者调用 list.size() 报错;后者返回 0,可安全遍历
  • Optional.of(null) 会立即抛 NullPointerException;正确姿势是 Optional.ofNullable(s)
  • FastJSON / Jackson 反序列化时,默认把 JSON 中缺失字段设为 null,而空字符串字段设为 ""——若代码只判 "".equals(s),会漏掉 null 分支

自定义“空对象”模式要谨慎

比如写一个 EmptyUser.getInstance() 来替代 null,这属于 Null Object Pattern,能避免 NPE,但代价是:增加类复杂度、掩盖真实缺失状态、可能让调用方误以为“数据存在”。

除非团队明确约定且所有上下游都遵守该契约,否则优先用 null 表达“无”,用空集合/空字符串表达“有但空”。Java 8+ 更推荐用 Optional 显式封装可能为空的返回值。

最易被忽略的一点:null 是 JVM 级别的底层语义,而“空对象”全是应用层模拟——只要没彻底消灭 null 的传播路径(比如参数校验、DTO 转 VO 时未做映射),就永远存在隐式空指针风险。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

420

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

536

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

312

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

483

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

237

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

458

2024.03.01

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1503

2023.10.24

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

1

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3万人学习

C# 教程
C# 教程

共94课时 | 8万人学习

Java 教程
Java 教程

共578课时 | 53.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号