Java判断null的几种方式

news2024/10/6 4:08:34

组内code review时,有同学提到字符串判断空值的写法,如下两种,

(1)null在后,

@Test
public void testDemo1() {
  String str = null;
  if (str == null) {
    System.out.println("null在后");
    return;
  }
}

(2)null在前,

@Test
public void testDemo2() {
  String str = null;
  if (null == str) {
    System.out.println("null在前");
    return;
  }
}

这两种写法,有什么区别?

这两个测试,都可以执行,有种解释是,null放在前面是为了避免少写一个"=",因为"null="书写会报错,防止笔误写成"=null",不会报错,进而漏掉问题。

null==a是以前C语言的写法,因为C允许if(a=null)这种判断,但这个其实是少写了个"=",所以c开发的人员为了避免这问题,就出现了null==a的写法,因为这样一旦漏写了个=号,编译器就会编译不通过。

但这在Java和c#这种面向对象的语言里面是不需要的,因为少个=号,不管java还是C#都是编译错误。

因此,Java中对null进行判断放在前后没有什么区别,只是为了代码规范,为了避免写代码时书写错误(建议将null放在前面,并不强制)。

顺带说下,Java中判断字符串是否为空的四种方法,

方法一:最多人使用的一个方法,直观,方便,但效率很低,

if(s == null || s.equals(""));

方法二:比较字符串长度,效率高

if(s == null || s.length() == 0);

方法三:Java SE 6.0才开始提供的方法,效率和方法二几乎相等,但出于兼容性考虑,推荐使用方法二,

if(s == null || s.isEmpty());

方法四:这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多,

if (s == null || s == "");

注意,s == null这个判断是有必要存在的,如果String类型为null,进行equals(String)或length()等操作会抛出java.lang.NullPointerException。而且s==null的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

a4a4c39eb2bd71441f98b1ab48017977.png

近期更新的文章:

《MySQL新身份验证插件caching_sha2_password》

《金融知识小科普 - 北向资金》

《MySQL的MVCC再学习》

《金融知识小科普 - 宽基指数》

《能从家中看球的球场》

近期的热文:

《"红警"游戏开源代码带给我们的震撼》

文章分类和索引:

《公众号1100篇文章分类和索引》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机的人机交互

1、 计算机的人机交互发展历史 计算机在刚开始出现的时候,因为占地广、造价高、耗电高的原因,一般都是给军队、政府使用的,并不是给个人使用的。随着计算机的发展,体积越来越小,出现了微型机,才使得计算机…

C# 数据库 ADO.NET概述

一 数据库 1 数据库(Database) 2 数据库管理系统(DBMS) 如Oracle,MS SQL Server 3 数据库系统的优点 共享性、独立性、完整性、冗余数据少。 4 管理功能 数据定义/操纵/完整/完全/并发 二 常用的数据库管理系统 1 微软的…

剑指offer----C语言版----第二天

目录 1. 二维数组中的查找 1.1 题目描述 1.1 思路一 1.2 思路二 1.3 思路三(最优解) 1. 二维数组中的查找 原题链接:剑指 Offer 04. 二维数组中的查找 - 力扣(LeetCode)https://leetcode.cn/problems/er-wei-shu-…

WinServer 2012 域控组策略 用户发布软件部署

本例演示安装 Notepad 这款软件 因为域中发布软件只支持 msi 格式,所以要把 exe 转成 msi 格式,可以用这个软件 https://www.advancedinstaller.com/ 1、转换格式 (1)选择 MSI from EXE (2)定义项目名…

PLC实现十字路口交通灯的控制课程设计毕业设计

微信公众号:创享日记 对话框发送:plc十字路口 获取完整源码源程序文件 要求: 1、信号灯受启动及停止按钮的控制,当按下启动按钮时,信号灯系统开始工作,并周而复始地循环工作,当按下停止按钮时&…

【再学Tensorflow2】TensorFlow2的核心概念

TensorFlow2的核心概念Tensorflow中的张量常量张量变量张量Tensorflow中的计算图计算图介绍静态计算图动态计算图Autograph张量Tensor、图Graph、操作Operation、会话Session模型Model与层LayerTensorflow中的自动微分机制利用梯度磁带求导数利用梯度磁带和优化器求最小值参考资…

ArcGIS基础实验操作100例--实验13 数字化面图形的技巧

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验13 数字化面图形的技巧 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08…

Android 虚拟机 模拟器 设置梯子代理 for Mac

最近需要Android13的环境,想着刷机或者弄个模拟器。 本着效率优先的原则,现在本地机器上搞个Android模拟器。 打开AndroidStudio,在tool菜单 选择avd,安卓虚拟设备 根据本地电脑选择x86架构,MAC os 10.12&#xff0c…

虹科案例 | 监测各种材料液位居然如此轻松?

应用背景 1 天送达标准给公司带来了压力,要求他们比以往任何时候都更快、更高效地处理物品。对于依赖散装材料的行业尤其如此。例如: 农业 建造 塑胶成型 食品加工 许多这些行业通过将材料存放在箱子、罐或筒仓中来处理材料。为了正确地计…

麦克风采样率设置导致视频会议中声音采集异常问题分享

目录 1、问题描述 2、麦克风音频采集频率引发的声音采集异常 3、修改麦克风采集频率的详细说明 4、最后 这几年,大家已经习惯于使用视频会议软件(比如免费的腾讯会议软件)进行线上沟通与交流,通过摄像头将头像采集发送到会议中…

ARM专用指令

目录 一、状态寄存器传送指令:访问(读写)CPSR寄存器 ​编辑 二、软中断指令:触发软中断 三、协处理器指令:操控协处理器的指令 四、伪指令: 一、状态寄存器传送指令:访问(读写)CPSR寄存器 CPSR寄…

多线程的创建和使用(4种)

1.JDK5.0之前的创建方式 方式一:继承于Thread类 1.创建一个继承于Thread类的子类 2.重写Thread类的run() --> 此线程执行的作声明在run()中 3.创建Thread类的子类的对象 4.通过此对象调用start() 方式二:实现Runnable接口 1.创建一个实现了Runnable…

第三十五章 数论——卡特兰数

第三十五章 数论——卡特兰数一、什么是卡特兰数1、推导2、公式二、卡特兰数的应用1、问题:2、分析3、代码一、什么是卡特兰数 1、推导 我们看下面这个坐标系: 我们从(0,0)(0,0)(0,0)点到(6,6)(6,6)(6,6)点的路线有很多,并且根据我们高中排…

57.return—函数的返回值

57.return-函数的返回值 文章目录57.return-函数的返回值1.定义2.分类3. 没有返回值4.有1个返回值5.有多个返回值6.一个自定义函数只执行一次return语句7.实操练习1.定义 return关键字后接变量名或表达式可以将函数的计算结果返回到调用处。 变量或表达式等同于接收果汁、豆浆…

Chronicle Pro - 一款简单 Mac 理财规划师,管理你的的个人预算

Chronicle Pro - 一款简单 Mac 理财规划师,管理你的的个人预算 使用Chronicle追踪和支付账单,管理你的个人预算,这是一款简单的Mac理财规划师。获得通知,这样你就不会错过下一个付款截止日期;你再也不用付滞纳金了。把你所有的账单…

8 GUI实例

GUI 1 Frame 用来创建窗口,构造函数如下: public Frame() throws HeadlessExceptionpublic Frame(String title) throws HeadlessException 常用方法如下: public class gui_v1 {public static void main(String[] args) {Frame f new F…

用python的turtle库画一个小猪佩奇

小猪佩奇是一个可爱的小猪。她已经四岁了,与她的妈妈,爸爸,和弟弟乔治生活在一起。佩奇最喜欢做的事情是玩游戏,打扮的漂亮,度假,以及在小泥坑里快乐的跳上跳下和与小羊苏西(她最好的朋友&#…

Nginx小结1

Nginx 是一个高性能的HTTP和反向代理web服务器,作为负载均衡器,承接的所有请求。核心功能有负载均衡、反向代理、静态资源服务器。另外Nginx还可以使用keepalive结合使用建立主备份机实现高可用。keepalive是在TCP中一个可以检测死连接的机制&#xff0c…

WordPress插件开发教程1:开发第一个WordPress插件

第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin。 第二步:进入 my-first-plugin 目录,新建一个PHP文件,随便起个名字,比如:hello.…

UE解决SetActorHiddenInGame后其Collision仍然会被检测到的问题

文章目录 1.问题产生2.解决过程3.总结4.参考资料1.问题产生 (1)首先我在场景内添加了红色的球(Sphere)和绿色的面片(Plane),两者都是StaticMeshActor,如下图所示: (2)然后进入二者的静态网格体编辑窗口,将二者的碰撞复杂度都设置为UseComplexCollisionAsSimple。 …