[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 判断字符串是否为空的三种方法与性能分析相关推荐

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

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

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

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

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

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

  4. java中判断字符串是否为数字的三种方法

    1用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = str.length();--i>=0;){ if (! ...

  5. Shell中判断字符串是否为数字的6种方法

    Shell中判断字符串是否为数字的6种方法 #!/bin/bash # 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]* ...

  6. javascript中将字符串转换为json格式的三种方法

    摘自:http://www.phpzixue.cn/detail1128.shtml javascript中将字符串转换为json格式的三种方法:  json在我们js的开发过程中经常会用到像在使用a ...

  7. php 去掉后导字符,PHP去除字符串最后一个字符的三种方法实例

    前言 本文讲讲PHP中如何正确的去除字符串中的最后一个字符,之前跟大家分享过一篇关于PHP去除字符串最后一个字符的三种方法的文章,但是没给出实例,下面话不多说,直接上代码,相信一眼就能看出来了,直接将 ...

  8. java判断空对象为空_Java判断对象是否为空(包括null ,)的方法

    本文实例为大家分享了Java判断对象是否为空的具体代码,供大家参考,具体内容如下 package com.gj5u.publics.util; import java.util.List; /** * ...

  9. java class 生成对象_Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...

最新文章

  1. python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
  2. c的开始,求最大数。
  3. halcon的算子清点: Chapter 5 滤波
  4. q7goodies事例_Java 8 Friday Goodies:SQL ResultSet流
  5. 修改Cocos2d-X-3.2中的setup.py, 使其能用python3
  6. oracle维护常用SQL语句(查看系统表和视图)
  7. ie6,ie7兼容性总结(转)
  8. ios 平滑移动view_解决页面使用overflow: scroll在iOS上滑动卡顿的问题
  9. C#通用类库--数字转为人民币汉字大写表示
  10. OpenStack Queens版本Barbican项目介绍
  11. 解决树莓派中文显示框框乱码
  12. 淘宝店铺装修_黑色店铺模板如何搭配?
  13. 思必驰CMO龙梦竹:万物可沟通,万事可打理
  14. 《孩子,你慢慢来》的读书笔记与读后感2600字
  15. java技术路线思维导图_最简单的思维导图+流程图制作神器processon
  16. 明翰数据结构与算法笔记V0.8(持续更新)
  17. OpenGL 图形库的使用(二十五)—— 高级OpenGL之帧缓冲Framebuffers
  18. 小米4 刷入魔趣教程
  19. 大数据hadoop与spark研究——1 spark环境搭建
  20. 直播电商源码使用缓存,将面临什么问题

热门文章

  1. 【LeetCode】3月26日打卡-Day11
  2. Java面试题:IO流中read()方法为什么返回值是int
  3. PHP中 .= 的意思
  4. iscsi-分区类型
  5. T-SQL 之 执行顺序
  6. 第一阶段 07类与对象
  7. fiddler工具条、状态栏、请求信息栏各按钮的作用
  8. Java容器---Set: HashSet TreeSet LinkedHashSet
  9. qemu-kvm磁盘读写的缓冲(cache)的五种模式
  10. scrapy 工作流程