java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析
[java中判断字符串是否为数字的三种方法 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (!Charact
Java 判断字符串是否为空的三种方法与性能分析
Java编程过程中经常会涉及到判断空字符串的问题,对于我而言经常使用的是equals()方法,代码如下:
if(target != null && !"".equals(target)){
System.out.println("target字符串不为空");
}
碰巧昨天见到一篇关于判断Java空字符串三种方法的比较,突然觉得自己在平时里做的还不够深入,没有对代码的性能进行极致优化,自己要反思与提高。
原文提到的三种方法分别是:我使用的equals()、length()和JDK6之后的 isEmpty(),在性能上原文分析结果是equals()性能几乎是length()的3.5倍,这个我不敢苟同,我实际测试的结果如下:
equals use time: 110ms
length use time: 78ms[以下是 Java 判断字符串是否为空的三种方法. 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.方法二: 比较字符串长度, 效率高. 方法三: Java SE 6.0 才开始提供的
还没到2倍,于是乎我查看了String的源码:
public int length() {
return count;
}
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
通过源码我很容易发现length()的效率要高于equals(),length()直接返回String对象的Count属性,而equals()需要先进行判断目标比对对象的类型,然后再进行其它操作,同时还要遍历String对象的每一个char,查看是否相同。
同时原文提到的JDK6提供的String .isEmpty()方法我没有安装JDK6,所以只能替代行的查看了Commons-lang-2.6内StriingUtils的该方法,我相信JDK6的源码与它应该是相同的,源码如下:
public static boolean isEmpty(String str)
{
return (str == null) || (str.length() == 0);
}
可见isEmpty()同样也使用了length()方法,呵呵~只能说apache不傻。
综上我们可以清晰的得出三者性能上的优劣。equals() <
java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析相关推荐
- java字符串为空抛出异常_Java 判断字符串是否为空的四种方法,及效率比较。
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- java怎么判断字符串是否为空的几种方法(亲测)
StringUtils 第一步使用if(StringUtils.isBlank(a))判断字符串a是否为空,为空执行if语句内打印语句,使用StringUtils,需要添加commons-lang-2 ...
- java中判断字符串是否为数字的三种方法
1用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = str.length();--i>=0;){ if (! ...
- Shell中判断字符串是否为数字的6种方法
Shell中判断字符串是否为数字的6种方法 #!/bin/bash # 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]* ...
- javascript中将字符串转换为json格式的三种方法
摘自:http://www.phpzixue.cn/detail1128.shtml javascript中将字符串转换为json格式的三种方法: json在我们js的开发过程中经常会用到像在使用a ...
- php 去掉后导字符,PHP去除字符串最后一个字符的三种方法实例
前言 本文讲讲PHP中如何正确的去除字符串中的最后一个字符,之前跟大家分享过一篇关于PHP去除字符串最后一个字符的三种方法的文章,但是没给出实例,下面话不多说,直接上代码,相信一眼就能看出来了,直接将 ...
- java判断空对象为空_Java判断对象是否为空(包括null ,)的方法
本文实例为大家分享了Java判断对象是否为空的具体代码,供大家参考,具体内容如下 package com.gj5u.publics.util; import java.util.List; /** * ...
- java class 生成对象_Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...
最新文章
- python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
- c的开始,求最大数。
- halcon的算子清点: Chapter 5 滤波
- q7goodies事例_Java 8 Friday Goodies:SQL ResultSet流
- 修改Cocos2d-X-3.2中的setup.py, 使其能用python3
- oracle维护常用SQL语句(查看系统表和视图)
- ie6,ie7兼容性总结(转)
- ios 平滑移动view_解决页面使用overflow: scroll在iOS上滑动卡顿的问题
- C#通用类库--数字转为人民币汉字大写表示
- OpenStack Queens版本Barbican项目介绍
- 解决树莓派中文显示框框乱码
- 淘宝店铺装修_黑色店铺模板如何搭配?
- 思必驰CMO龙梦竹:万物可沟通,万事可打理
- 《孩子,你慢慢来》的读书笔记与读后感2600字
- java技术路线思维导图_最简单的思维导图+流程图制作神器processon
- 明翰数据结构与算法笔记V0.8(持续更新)
- OpenGL 图形库的使用(二十五)—— 高级OpenGL之帧缓冲Framebuffers
- 小米4 刷入魔趣教程
- 大数据hadoop与spark研究——1 spark环境搭建
- 直播电商源码使用缓存,将面临什么问题