判断字符串是否为空

2023-10-31

一、判断一个字符串为空的方法有:

  1. str == null || "".equals(str);

  2. str == null || str.length() == 0;

  3. str == null || str.isEmpty();

注意:
1)length是属性,一般集合类对象拥有的属性,取得集合的大小。
 例如:数组.length就是取得数组的长度。
2)length()是方法,一般字符串类对象有该方法,也是取得字符串长度。
 例如:字符串.length();

说明:

  1. null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。
  2. ""表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。
  3. null不是对象,"“是对象,所以null没有分配空间,”"分配了空间,例如:
/*str1还不是一个实例化的对象,儿str2已经实例化。*/
String str1 = null;  //str引用为空
String str2 = "";  //str应用一个空串

//对象用equals比较,null用等号比较。
//如果str1=null;下面的写法错误:这样写会报空指针异常
if(str1.equals("") || str1 == null){
} 
//正确的写法是:先判断是不是对象,如果是,再判断是不是空字符串
if(str1 == null || str1.equals("")){
}
  1. 判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。
 String str = "xxx";
 if(str != null && str.length() != 0) {
 }

二、 Java 判断字符串是否为空的三种方法的效率

方法1: 最多人使用的一个方法, 直观, 方便, 但效率很低。
方法2: 比较字符串长度, 效率高, 是我知道的最好一个方法。
方法3: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 不推荐使用。

以下是三种方法在机器上的运行结果: (机器性能不一, 仅供参考)
方法1 use time: 141ms
方法2 use time: 46ms
方法3 use time: 47ms

三种方法测试效率的代码如下:

方法一:

public void function1(String s,int n) {  
  long startTime = System.currentTimeMillis();  
   
  for(long i = 0; i<n; i++) {  
   if(s == null || s.equals(""));  
  }  
  long endTime = System.currentTimeMillis();  
   
  System.out.println("function 1 use time: "+ (endTime - startTime) +"ms");  
 }  
方法二:
 
public void function2(String str,int n) {  
  long startTime = System.currentTimeMillis();  
   
  for(long i = 0; i< n; i++) {  
   if(s == null || s.length() <= 0);  
  }  
  long endTime = System.currentTimeMillis();  
   
  System.out.println("function 2 use time: "+ (endTime - startTime) +"ms");  
 }  
方法三:

public void function3(String str , int n) {  
  long startTime = System.currentTimeMillis();  
   
  for(long i = 0; i <n; i++) {  
      if(s == null || s.isEmpty());  
  }  
  long endTime = System.currentTimeMillis();  
   
  System.out.println("function 3 use time: "+ (endTime - startTime) +"ms");  
   
}  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断字符串是否为空 的相关文章

随机推荐

  • 怎么把半角引号替换成全角_巧妙批量互换全角与半角双引号

    工作中时常会遇到使用英文标点符号的文章 如图 2 38所示 为了规范文件编排 通常需要将所有的英文标点符号转换为中文标点符号 即达到如图 2 39所示的效果 使用查找和替换功能可以快速完成这一工作 下面以替换半角双引号为例进行介绍 图2 3
  • 3D游戏设计——UI系统

    HW9 1 血条 Health Bar 的预制设计 具体要求如下 分别使用 IMGUI 和 UGUI 实现 使用 UGUI 血条是游戏对象的一个子元素 任何时候需要面对主摄像机 分析两种实现的优缺点 给出预制的使用方法 IMGUI 使用一个
  • Python如何使用Any和All?代码示例和解析

    Any和All是python中提供的两个内置插件 用于连续的And Or Any 如果任何一项为True 则返回true 如果为空或全部为假 则返回False 可以将任何内容视为对提供的可迭代对象进行的一系列OR操作 它将执行短路 即一旦知
  • 单向链表(c/c++)

    链表是一种常见的数据结构 其中运用到了结构体指针 链表可以实现动态存储分配 换而言之 链表是一个功能强大的数组 可以在某个节点定义多种数据类型 可以实现任意的添加 删除 插入节点等 废话结束 前置知识 地址 结构体 malloc函数与循环选
  • Linux图形化界面安装

    点击创建新的虚拟机 选择自定义模式然后点击下一步 红色框内是根据自身电脑选择的 一般为默认的就行 然后点击下一步 选择一个镜像文件 选择安装到的路径还有虚拟机的名称 默认就行 也是默认 电脑配置好的话可以适当增加 根据需求选择不同的网络类型
  • 我与世界杯足球那些事——世界杯征文

    征文活动链接 https bbs csdn net topics 609601920 目录 第一次了解世界杯 第一次观看世界杯 世界杯主题曲 我最热爱的球员 今年世界杯 预测冠军 第一次了解世界杯 提起世界杯 我可能了解的比较晚一些 是在2
  • 【win11+Visual Studio 2019 配置 PCL 1.12.1 的经验总结分享】

    点云pc库的下载与安装参考另外一篇文章 链接 https blog csdn net weixin 47869094 article details 131270772 spm 1001 2014 3001 5501 各种教程里面这都很好
  • mysql-connector-java与mysql版本的对应

    记录下mysql connector java与mysql版本的对应关系 已方便以后参考 这是最新版本对应 时间 2017年5月23日 官网文档地址 https dev mysql com doc connector j 5 1 en co
  • kafka-__consumer_offsets

    consumer offsets zookeeper不适合大批量的频繁写入操作 Kafka 1 0 2将consumer的位移信息保存在Kafka内部的topic中 即 consumer offsets主题 并 且默认提供了kafka co
  • RACI 职责分配矩阵 模型使用详解及案例分析

    一 RACI产生背景 RACI是项目管理中的人力资源管理方法 一个项目团 队的成员往往来自于不同背景的各个部门 这些成员受部门经理和项目经理的双重管辖 由于这些人往往是临时组织起来的 并且项目的各个阶段扮演不同的角色 而项目的任务又很紧迫
  • Spring详解(二)------IOC控制反转

    我相信提到 Spring 很多人会脱口而出IOC 控制反转 DI 依赖注入 AOP等等概念 这些概念也是面试官经常问到的知识点 那么这篇博客我们就来详细的讲解 IOC控制反转 ps 本篇博客源码下载链接 百度网盘 链接不存在 密码 oquc
  • 全国计算机等级考试题库二级C操作题100套(第100套)

    第100套 给定程序中 函数fun的功能是 在形参s所指字符串中寻找与参数c相同的字符 并在其后插入一个与之相同的字符 若找不到相同的字符则函数不做任何处理 例如 s所指字符串为 baacda c中的字符为 a 执行后s所指字符串为 baa
  • LU分解

    在高等工程数学一书中 LU分解 LU Decomposition 是矩阵分解中最普通的一种 也是最经典的一种 它可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积 有时是它们和一个置换矩阵的乘积 LU分解主要应用在其数值分析中 用
  • Java远程连接Redis时出现: java.net.SocketTimeoutException: connect timed out的解决办法

    今天连接Redis报了了连接超时的错误 搞了半天终于把问题给解决了 这里来梳理一下我解决问题的思路 1 redis已经在linux上安装成功了 也已经正常启动了 端口6379 2 使用idea连接redis报连接超时 第一想法是没有开启re
  • ROI Align 解析

    ROI Align 是何凯明在2017年的论文Mask RCNN中提出的 该方法很好地解决了ROI Pooling操作中两次量化造成的区域不匹配 mis alignment 问题 本文将先从实验结果入手 然后分析ROI Pooling产生局
  • 电商运营中的五个数据陷阱

    来源 新媒之家 电商 看懂数据是基本功 软件可以解决繁琐的计算 但解读还需要运营人员有基本的数据分析能力 本文列举了五个常见的数据陷阱 了解和掌握后可以有效避免一些分析结果的偏差 如今 大数据 的概念被炒得沸沸扬扬 不可否认 数据确实是越来
  • java服务压测连接中断org.apache.catalina.connector.ClientAbortException: java.io.IOException: 远程主机强迫关闭了一个现有的连

    1 服务压测出问题 2021 06 16 09 04 51 062 http nio 8089 exec 78 ERROR o a c core ContainerBase Tomcat localhost Exception Proces
  • Java项目部署完整步骤(腾讯云服务器)

    步骤一 购买服务器 小项目2核4G够用 2 4个启动器 多了服务器扛不住 xshell默认是不携带宝塔面板的需要输入命令进行下载 Centos安装脚本 yum install y wget wget O install sh https d
  • Spring Boot使用ApplicationRunner实现项目启动之后直接执行业务操作

    前言 如果我们希望在项目启动成功后自动执行某些操作或者业务的话 可以有很多方法 比如 在Application主程序里面写 或者是 这两个接口分别为CommandLineRunner和ApplicationRunner 这里简单的介绍另外一
  • 判断字符串是否为空

    一 判断一个字符串为空的方法有 str null equals str str null str length 0 str null str isEmpty 注意 1 length是属性 一般集合类对象拥有的属性 取得集合的大小 例如 数组