多种方式判断字符串是否为空,效率比拼
一、情景
- 判断输入字符串是否为空
- 分析: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()
方法 |
代码
|
示范:测试耗时
|
效率
|
名次
|
备注
|
一
|
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中封装的
|
总备注
|
当判断的循环的次数较少时,推荐方法四 |
方法
|
代码
|
示范:测试耗时
|
效率
|
名次
|
备注
|
一
|
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");}
}
多种方式判断字符串是否为空,效率比拼相关推荐
- java字符串为空抛出异常_Java 判断字符串是否为空的四种方法,及效率比较。
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- java - 判断 字符串是否为空
java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- 税收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 ...
- java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析
[java中判断字符串是否为数字的三种方法 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = s ...
- C++ 判断字符串是否为空
C++ 判断字符串是否为空 有2种方法 1种是用使用empty 2 使用== 与"" 比较 具体的如下: #include <iostream> #include &l ...
- java怎么判断字符串是否为空的几种方法(亲测)
StringUtils 第一步使用if(StringUtils.isBlank(a))判断字符串a是否为空,为空执行if语句内打印语句,使用StringUtils,需要添加commons-lang-2 ...
- html怎么判断字段是否为空,javascript中如何判断字符串是否为空?
javascript如何判断字符串是否为空?下面本篇文章给大家介绍一下JavaScript空字符串判断的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. javascript判断 ...
- Java技巧分享:判断字符串是否为空常的三种方法
很多初学Java的小伙伴肯定都有遇到过需要判断一个字符串是否为空的情况,那么你知道应该如何实现吗?今天小千就来给大家介绍三种不同的方式,同学们看一下哪个适合自己. 判断字符串是否为空有三种常见的方法分 ...
最新文章
- Flink从入门到精通100篇(二十)-跨境电商 Shopee 的实时数仓之路
- java的逻辑结构_Java的逻辑结构
- 找不到 快速启动 ,怎么办
- 2、mybatis的基本使用
- Html5 填表 表单(二) input type 各种输入, 各种用户选择,上传等等泛输入用户交互
- 等保2.0安全管理制度对比_一手资料!等保2.0云计算安全与风险评估
- 用命令来操作vSphere:十一 PowerCLI命令--虚拟机操作
- Arm发布v9体系架构:Cortex-X2、Cortex-A710和Cortex-A510
- php 监控nginx日志,nginx启用status监控服务器状态的方法详解
- OWASP 2013年十大Web应用安全漏洞
- oracle中文转全拼音,Oracle数据库之oracle汉字转拼音
- 1500个javascript特效
- html—显示照片(方法一)
- win10下快速搭建metasploitable3教程-简单版-已避坑
- 硅谷科技巨头CEO一年赚多少?这10位高薪代表了解一下
- c++ includes
- java.sql.SQLException: Access denied for user 'pc'@'localhost' (using passw
- 从微软官网下载VS离线安装包的方法VS2017,VS2019
- 木马伪装“刷单任务” 劫持QQ语音暗中盗号
- TP5后端,VUE前端请求聚合数据驾照题库