Java中的null总结

news/2024/4/24 12:53:13/

日常工作,遇见几次null的语法报错,整理以下Java中null:


🍁 null是一个关键字,对大小写敏感,像public、static…

🍁 null是所有引用数据类型的默认值(int默认0、boolean默认false…)
在这里插入图片描述

🍁 判断一个引用数据类型是否为null,用 == 判断

🍁 null做为一个特殊值,可以赋值给任何引用类型,但不能赋给基本类型

正确:
String str = null;
Integer i = null;
Double d = null; 
------
以上也可写成:即可以将null转化成任何引用类型
Integer str = (String)null;
Double d = (Double)null;
Integer i = (Integer)null;
报错:
int i = null;

🍁 基本数据类型的包装类,若值为null,则拆箱后发生空指针异常

public static void main(String[] args){Integer i = (Integer)null;i++;  //此处做数值运算,发生自动拆箱
}
public static void main(String[] args){Integer i = (Integer)null;int q = i; //拆箱
}
//再贴个别人的例子
public static void main(String[] args){Map map = new HashMap<>();int[] numArray = {1,2,3};for(int i : numArray){int count = (int) map.get(i);map.put(i,count++);}
}

以上三个例子,均空指针:

在这里插入图片描述

🍁 null可以和String类型进行运算,但不能和八大基本数据类型进行运算

在这里插入代码片

🍁 可以使用==或者!=操作来比较null值(null == null为true),但是不能进行其他逻辑比较,如> <

- null ==-== null以上两种写法都一样,不过null == 值 是种好习惯。
使用值 == null,若少些了等号,编译器不会报错,而此时条件判断变赋值,容易空指针
而使用null == 值,若少等号,null = 值,编译器报错

🍁 null instanceof xxx 结果为false

Integer i = null;
if(i instanceof Integer){System.out.println("i是Integer类型");
}else{System.out.println("i不是Integer类型");
}//run:i不是Integer类型

🍁容器类型与null:

  • List集合:允许元素重复,可以加入任意多个null
  • Set集合:不允许重复元素,最多可以加入一个null
  • Map集合:Map的key最多可以加入一个null(key重复则覆盖value),value字段没有限制
  • 数组:未初始化,赋值参考各数据类型的默认值。引用类型数组,不给定初始值,则所有的元素值为null
String[] array = new String[6];
for(String s: array){System.put.println(s);
}//输出六个null

http://www.ppmy.cn/news/47946.html

相关文章

智能面板小程序如何实现跨端开发,并无缝引入ChatGPT?

如何让开发者更便捷高效地开发面板小程序&#xff1f; 全球化 IoT 开发平台服务商涂鸦智能&#xff08;NYSE&#xff1a;TUYA&#xff0c;HKEX&#xff1a;2391&#xff09;原先提供的是一套基于 React Native (简称 RN) 的面板 SDK&#xff0c;但是随着面板规模的不断增长&am…

工程项目管理系统源码+spring cloud 系统管理+java 系统设置+二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

采购系统是如何管理供应商的?

随着数字化的推进&#xff0c;企业面临着越来越多的供应商管理问题。企业采购数字化转型已经成为大势所趋&#xff0c;对于采购数字化转型而言&#xff0c;供应商管理是重要一环。 供应商准入管理 在供应商准入阶段&#xff0c;企业需要从供应商资质、财务能力、信誉能力、管理…

redis笔记——springboot集成redis

Sprigboot整合 springboot整合数据操作一般会通过官方的一个项目springdata来进行整合&#xff0c;它可以操作很多市面上流行的数据库&#xff0c;并且为java程序提供一套完整的统一的api调用。在springboot2版本之后&#xff0c;原本的jedis被替换成功了lettuce。原因是 jed…

Java读取文件方式

IO流读取 文本内容 按行读取文件内容 指定编码格式&#xff08;推荐&#xff09; public static void main(String[] args) throws UnsupportedEncodingException {read("D:\\test.txt");}public static void read(String path) {BufferedReader reader null;try …

DNS服务器 - 理论

DNS服务器 1. 概念2. DNS域名结构3. 域名的分级4. 域名服务器4.1 层次结构4.2 DNS服务类型 5. 域名解析过程5.1 递归查询与迭代查询5.2 解析流程1. 迭代查询2. 递归查询 6. 高速缓存7. 加上主机缓存后的DNS解析流程8. 常见的域名解析记录9. DNS正向解析和反向解析10. 配置文件介…

Ubuntu上跑通PaddleOCR

书接上文。刚才说到我已经在NUC8里灌上了Windows Server 2019。接下来也顺利的启用了Hyper-V角色并装好了一台Ubuntu 22.04 LTS 的虚机。由于自从上回在树莓派上跑通了Paddle-Lite-Demo之后想再研究一下PaddleOCR但进展不顺&#xff0c;因此决定先不折腾了&#xff0c;还是从x6…

vs = VirtualService

VirtualService 您是正确的。我混淆了Kubernetes中的资源类型。"vs"是Istio服务网格中的资源类型&#xff0c;代表Virtual Service&#xff08;虚拟服务&#xff09;。 Virtual Service是Istio中的一种路由规则&#xff0c;它定义了如何将请求路由到服务的不同版本…

2023年 中国制造业这三大趋势不可忽视

政府要掏1个亿奖励制造企业搞发展&#xff0c;我国制造业大翻身的时代来了吗&#xff1f; 4月12日成都日报电&#xff0c;为支持制造业创新发展&#xff0c;支持制造业数字化、智能化和绿色化转型升级&#xff0c;培育高精尖特企业&#xff0c;政府给扶持政策不说&#xff0c;…

如何快速查找下载外文文献,哪个文献下载网站好用

​​如何高效获取到自己需要的外文文献&#xff0c;最好的办法就是去文献来源数据库中查找&#xff0c;你需要的文献来源数据库有可能是Elsevier&#xff08;sciencedirect&#xff09;、也可能是Wiley Online Library、也有可能是IEEE等等&#xff0c;外文数据库机构太多了。这…

C语言入门篇——数据篇

目录 1、变量与常量 1.1变量 1.2常量 1.2.1#define 定义的标识符常量 1.2.2枚举常量 2、数据类型关键字 3、整数 4、浮点数 5、基本数据类型 5.1、int型数据 5.2、char型数据 5.3、_Bool类型 5.4、float、double和long double 5.5、复数和虚数类型 6、总结 1、变…

Springboot基础学习之(二十三):实现定时任务

定时任务&#xff1a;在开发过程中是经常能够使用到的&#xff1a;定时发布邮件等等 先了解一下什么时cron表达式&#xff1f; 它是定义执行任务时间的一种时间表达式&#xff0c;使用方法 Scheduled(cron "0/2 * * * * ? ")&#xff0c;这里代码的含义是每两秒执行…

Linux 内核原理摘录

文章目录 一、Linux 内核设计与实现1、进程管理&#xff08;1&#xff09;调度2、内核数据结构&#xff08;1&#xff09;kfifo 3、中断 一、Linux 内核设计与实现 本章主要用来摘录《Linux 内核设计与实现》一书中学习知识点&#xff0c;其基于 Linux 2.6.34 。 1、进程管理 …

关于自身存在的严重问题总结_4/19

今早二次面试喜马拉雅&#xff0c;面试官给我的评价是&#xff1a; 1.经验不足&#xff1b; 2.实用方面生疏、理解不到位&#xff1b; 原因很正常&#xff0c;我项目自己亲手实操的太少了&#xff0c;一直在背&#xff0c;但是背 不是去读源码 去理解&#xff1b; 项目也大…

LINUX系统SSH连接安装Matlab、添加环境变量、后台运行Matlab脚本

安装Matlab 使用MobaXterm软件SSH连接远程服务器&#xff0c;输入IP、用户名和端口号&#xff1a; 输入密码进入&#xff08;密码不显示&#xff09; 网上找一个Matlab安装包&#xff08;iso镜像&#xff09;上传进服务器端&#xff0c;或者直接使用wget指令在服务器端下载镜…

8:00面试,8:05就出来了 ,问的实在是太变态了···

从外包出来&#xff0c;没想到算法死在另一家厂子。 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到12月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟…

解决OpenCV与Numpy版本不匹配问题

小背景 周四晚上发现之前写的程序不能用了&#xff0c;不知道是系统中使用了bootstrap的原因还是什么。为了方便&#xff0c;我把系统也放在了和之前做实验的conda环境。一开始不管算法还是系统都可以使用&#xff0c;但就那天晚上说部署一下Django项目&#xff0c;顺便再测一…

【C++】deque的实现原理简单介绍

前言 deque被称为双端队列&#xff0c;它的出现主要是为了结合vector和list的优点并减小它们的缺点&#xff0c;实际上deque确实结合了vector和list的优点减小了它们的缺点&#xff0c;但是它的结合也让它自己的优点没有原始的vector和list那么极致&#xff0c;导致deque变得很…

勒索病毒应急响应指南

勒索病毒应急响应指南 1.勒索病毒的攻击特点2.隔离被感染的服务器/主机3.排查业务系统4.确定勒索病毒种类,进行溯源分析5.恢复数据和业务6.清除加固7.勒索病毒的防御方法个人终端防御技术企业级终端防御技术1.勒索病毒的攻击特点 无 C2 服务器加密: 攻击者在对文件加密的过…

自动控制原理模拟卷4

自动控制原理模拟题四 Question1 仓库大门自动开闭控制系统原理图如下图所示,说明系统自动控制大门开闭的工作原理并画出系统方块图; 解: 当合上开门开关时,电位器桥式测量电路产生一个偏差电信号;此偏差电压经放大器放大后,驱动伺服电动机带动绞盘转动,使大门提起;与…