Java中的null总结

news/2025/1/16 1:36:38/

日常工作,遇见几次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;它定义了如何将请求路由到服务的不同版本…