一、情景

  • 判断输入字符串是否为空  
  • 分析:null   && “” || length()==0

二、区分null 与“”

  • null:字符串不指向任何东西,即null不是个对象,null没有分配空间,,未实例化,所以这时候调用它会报空指针异常
  • “” :它指向一个长度为0的字符串,即“”是个对象,“”分配了空间;已经实例化

三、应用场景

  • 正确写法:if(str==null||str.equals(""))    ==>先判断字符串是否为对象,在判断是否为空字符串
  • 错误写法:if(str.equals("")||str==null)    ==>这种写法容易造成空指针异常!!
  • 所以判断字符串是否为空,首先确保它不是NULL,即是个对象,然后再判断它的长度是否为0
    • if(str!=null && str.length!=0)
    • if( StringUtils.isNotBlank(str) ) ==>使用StringUtils中封装的方法StringUtils.isNotBlank()

一、实践
说明:以下五种方法,都是测试相同字符串“This is the test data”,测试循环次数:10000 次;
当测试数据足够长,次数足够多,差别才会特别明显。反复试验多次,最终得出以下结论
方法
代码
示范:测试耗时
效率
名次
备注
str == null || "".equals(str)
694ms
4
str == null || str.length() <= 0
458ms
较高
2
str == null || str.isEmpty()
601ms
次之
3
javaSE6.0之开始提供该方法;才兼容
str == null || str == ""
178ms
最高
1
 
StringUtils.isBlank(str)
744ms
最低
5
效率最低,StringUtils中封装的
总备注
当判断的循环的次数较少时,推荐方法四
二、实践
说明:以下五种方法,都是测试相同字符串“This is the test data”,测试循环次数:100000 次;
当测试数据足够长,次数足够多,差别才会特别明显。反复试验多次,最终得出以下结论
方法
代码
示范:测试耗时
效率
名次
备注
str == null || "".equals(str)
4803ms
最低
5
str == null || str.length() <= 0
2979ms
2
str == null || str.isEmpty()
2965ms
次之
3
javaSE6.0之开始提供该方法;才兼容
str == null || str == ""
2978ms
较高
2
StringUtils.isBlank(str)
2962ms
最高
1
StringUtils中封装的
总备注
当判断的循环的次数较大时,推荐方法五
public class StringJudgeController {public static void main(String[] args) {// 当测试的次数从10000  变为100000.结果差异很大!!!JudgeString1("This is the test data", 10000);JudgeString2("This is the test data", 10000);JudgeString3("This is the test data", 10000);JudgeString4("This is the test data", 10000);JudgeString5("This is the test data", 10000);}/*** 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低;* 方法二: 比较字符串长度, 效率高, 是最好的一个方法;* 方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二;* 方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多;* 方法五: 这是java自己封装的方法,方便调用;但是效率最低*/public static void JudgeString1(String str, long num) {long startTiem = System.currentTimeMillis();for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {if (str == null || "".equals(str)) {}}}long endTime = System.currentTimeMillis();System.out.println("function1耗时:" + (endTime - startTiem) + "ms");}public static void JudgeString2(String str, long num) {long startTiem = System.currentTimeMillis();for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {if (str == null || str.length() <= 0) {}}}long endTime = System.currentTimeMillis();System.out.println("function2耗时:" + (endTime - startTiem) + "ms");}public static void JudgeString3(String str, long num) {long startTiem = System.currentTimeMillis();for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {if (str == null || str.isEmpty()) {}}}long endTime = System.currentTimeMillis();System.out.println("function3耗时:" + (endTime - startTiem) + "ms");}public static void JudgeString4(String str, long num) {long startTiem = System.currentTimeMillis();for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {if (str == null || str == "") {}}}long endTime = System.currentTimeMillis();System.out.println("function4耗时:" + (endTime - startTiem) + "ms");}public static void JudgeString5(String str, long num) {long startTiem = System.currentTimeMillis();for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {if (StringUtils.isBlank(str)) {}}}long endTime = System.currentTimeMillis();System.out.println("function5耗时:" + (endTime - startTiem) + "ms");}
}

多种方式判断字符串是否为空,效率比拼相关推荐

  1. java字符串为空抛出异常_Java 判断字符串是否为空的四种方法,及效率比较。

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  2. java - 判断 字符串是否为空

    java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...

  3. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  4. 税收java_String 类中的 isEmpty() 是判断字符串是否为空的,如果为空返回 true ,不为空返回 false 。 (1.0分)_学小易找答案...

    [填空题]Claudia möchte sich mit ihrem Kollegen Tobias treffen:  Tobias, ich möchte gern mit ins Kino g ...

  5. java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析

    [java中判断字符串是否为数字的三种方法  1>用JAVA自带的函数 public static boolean isNumeric(String str){   for (int i = s ...

  6. C++ 判断字符串是否为空

    C++ 判断字符串是否为空 有2种方法 1种是用使用empty 2 使用== 与"" 比较 具体的如下: #include <iostream> #include &l ...

  7. java怎么判断字符串是否为空的几种方法(亲测)

    StringUtils 第一步使用if(StringUtils.isBlank(a))判断字符串a是否为空,为空执行if语句内打印语句,使用StringUtils,需要添加commons-lang-2 ...

  8. html怎么判断字段是否为空,javascript中如何判断字符串是否为空?

    javascript如何判断字符串是否为空?下面本篇文章给大家介绍一下JavaScript空字符串判断的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. javascript判断 ...

  9. Java技巧分享:判断字符串是否为空常的三种方法

    很多初学Java的小伙伴肯定都有遇到过需要判断一个字符串是否为空的情况,那么你知道应该如何实现吗?今天小千就来给大家介绍三种不同的方式,同学们看一下哪个适合自己. 判断字符串是否为空有三种常见的方法分 ...

最新文章

  1. Flink从入门到精通100篇(二十)-跨境电商 Shopee 的实时数仓之路
  2. java的逻辑结构_Java的逻辑结构
  3. 找不到 快速启动 ,怎么办
  4. 2、mybatis的基本使用
  5. Html5 填表 表单(二) input type 各种输入, 各种用户选择,上传等等泛输入用户交互
  6. 等保2.0安全管理制度对比_一手资料!等保2.0云计算安全与风险评估
  7. 用命令来操作vSphere:十一 PowerCLI命令--虚拟机操作
  8. Arm发布v9体系架构:Cortex-X2、Cortex-A710和Cortex-A510
  9. php 监控nginx日志,nginx启用status监控服务器状态的方法详解
  10. OWASP 2013年十大Web应用安全漏洞
  11. oracle中文转全拼音,Oracle数据库之oracle汉字转拼音
  12. 1500个javascript特效
  13. html—显示照片(方法一)
  14. win10下快速搭建metasploitable3教程-简单版-已避坑
  15. 硅谷科技巨头CEO一年赚多少?这10位高薪代表了解一下
  16. c++ includes
  17. java.sql.SQLException: Access denied for user 'pc'@'localhost' (using passw
  18. 从微软官网下载VS离线安装包的方法VS2017,VS2019
  19. 木马伪装“刷单任务” 劫持QQ语音暗中盗号
  20. TP5后端,VUE前端请求聚合数据驾照题库

热门文章

  1. WPF Slider与TextBox绑定
  2. python使用OpenCV加载图像为RGB图并可视化加载的图像(Convert to RGB and show image)
  3. ArcGIS:如何通过欧氏距离分析、重分类等工具对学校选址问题进行分析
  4. 使用Photoshop制作icon图标
  5. TextBox焦点事件
  6. 直击传统企业4大痛点 创新思维或能逆风翻盘!
  7. 【深度学习】自回归VS自编码
  8. mysql dbhelper 下载_DbHelperMySQL
  9. ​影响广告收益的关键因素及其优化方法
  10. 无瘤技术护理配合在妇科腹腔镜恶性肿瘤手术中的应用