关于JAVA字符串非空判断效率问题(转载)

本文探讨了JAVA中字符串非空判断的不同方法及其效率对比。通过分析JDK源代码揭示了为何使用长度判断更为高效,并推荐了一种更优的判断方式及第三方库方法。
部署运行你感兴趣的模型镜像

关于JAVA字符串非空判断效率问题

字符串非空的判断,我们经常如下这样写:


   
1 if (str == null || "" .equals(str)){ 2 // 具体操作 3   }

JDK的equals方法的源代码:


   
1 public boolean equals(Object anObject) { 2   if ( this == anObject) { 3 return true ; 4 } 5 if (anObject instanceof String) { 6 String anotherString = (String)anObject; 7 int n = count; 8 if (n == anotherString.count) { 9 char v1[] = value; 10 char v2[] = anotherString.value; 11 int i = offset; 12 int j = anotherString.offset; 13 while (n -- != 0 ) { 14 if (v1[i ++ ] != v2[j ++ ]) 15 return false ; 16 } 17 return true ; 18 } 19 } 20 return false ; 21 }

 如果去比较字符串的长度是否为0的话,效率是更高的,str.length()的方法,则是直接返回其大小.

所以做字符串非空判断尽量写成如下方式:


   
1 if (str == null || str.length() == 0 ){ 2 // 具体操作 3 }

也可以用apache-common-lang包下StringUtils.isEmpty(String src);方法判断即可,里面的实现就是用长度来判断的。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Java判断字符串是否,通常需要考虑以下几个方面: 1. **字符串变量是否为 `null`**:即检查变量是否指向一个字符串对象。 2. **字符串对象是否为字符串**:即字符串的长度是否为 0。 3. **字符串是否包含白字符**:例如格、制表符等,这些可能在业务逻辑中也被视为“”。 ### 使用基础方法判断 可以使用基础的 Java 方法进行判断: ```java public class StringCheck { public static boolean isNonEmpty(String str) { return str != null && !str.isEmpty(); } } ``` 此方法仅检查字符串是否为 `null` 和是否为字符串,但不考虑字符串是否仅包含白字符。 ### 使用工具类判断 为了更全面地判断字符串是否,可以使用类似于 `StringUtils` 的工具类,该类提供了对白字符的处理: ```java public class StringUtils { /** * 判断字符串是否为或者仅包含白字符。 * * @param str 要检查的字符串 * @return 如果字符串为 null 或者白则返回 true,否则返回 false */ public static boolean isBlank(String str) { return str == null || str.trim().isEmpty(); } /** * 判断字符串是否白。 * * @param str 要检查的字符串 * @return 如果字符串白则返回 true,否则返回 false */ public static boolean isNotBlank(String str) { return !isBlank(str); } } ``` 通过 `isNotBlank` 方法可以判断字符串是否且包含白字符。此方法适用于大多数业务场景,特别是在处理用户输入时,能够有效避免因字符串引发的逻辑错误。 ### 示例 ```java public class Main { public static void main(String[] args) { String str1 = null; String str2 = ""; String str3 = " "; String str4 = "Hello"; System.out.println(StringUtils.isNotBlank(str1)); // false System.out.println(StringUtils.isNotBlank(str2)); // false System.out.println(StringUtils.isNotBlank(str3)); // false System.out.println(StringUtils.isNotBlank(str4)); // true } } ``` ### 注意事项 - `str == null` 用于判断字符串变量是否指向一个对象。 - `str.isEmpty()` 用于判断字符串对象是否为字符串。 - `str.trim().isEmpty()` 用于判断字符串是否为或仅包含白字符[^1]。 通过上述方法和工具类,可以有效地判断 Java字符串是否
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值