length()代替equals()检验字符串是否为空串

主题

永远也不要使用string.equals(“”)检验一个字符串是空串

最优方案

检验字符串是空串的最好方法是:用length(),这个方法返回字符串中字符的个数,如果字符的个数是0,一定是空串。

public boolean isEmpty(String str)
{
    return str.equals("");        //NEVER do this
}

public boolean isEmpty(String str)
{
    return str.length()==0;        //Correct way to check empty
}

论证

String部分源码如下

length()

public int length() {
    return count;
}

equals()方法源码

/**
     * Compares this string to the specified object.  The result is {@code
     * true} if and only if the argument is not {@code null} and is a {@code
     * String} object that represents the same sequence of characters as this
     * object.
     *
     * @param  anObject
     *         The object to compare this {@code String} against
     *
     * @return  {@code true} if the given object represents a {@code String}
     *          equivalent to this string, {@code false} otherwise
     *
     * @see  #compareTo(String)
     * @see  #equalsIgnoreCase(String)
     */
    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

可以看出length()简单的返回字符的个数,不会浪费太多的CPU,但是equals()方法有很多的判断语句,还创建了临时数组和采用了循环,浪费了大量的CPU资源

java 6以后提供了 isEmpty()方法使用,所以以后用这个方法

/**
     * Returns <tt>true</tt> if, and only if, {@link #length()} is <tt>0</tt>.
     *
     * @return <tt>true</tt> if {@link #length()} is <tt>0</tt>, otherwise
     * <tt>false</tt>
     *
     * @since 1.6
     */
    public boolean isEmpty() {
        return value.length == 0;
    }

参考内容:click here

时间: 2024-10-30 07:18:23

length()代替equals()检验字符串是否为空串的相关文章

leetCode 58. Length of Last Word 字符串

58. Length of Last Word Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence c

[LeetCode] Length of Last Word 字符串查找

Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence consists of non-space cha

[LeetCode] Encode String with Shortest Length 最短长度编码字符串

Given a non-empty string, encode the string such that its encoded length is the shortest. The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note: k will be a positive integ

【转】三种常用的字符串判空串方法

1. 三种常用的字符串判空串方法:Length法:bool isEmpty = (str.Length == 0);Empty法:bool isEmpty = (str == String.Empty);General法:bool isEmpty = (str == ""); 2. 深入内部机制:要探讨这三种方法的内部机制,我们得首先看看.NET是怎样实现的,也就是要看看.NET的源代码!然而,我们哪里找这些源代码呢?我们同样有三种方法:Rotor法:一个不错的选择就是微软的Rotor

判断字符串是否为空--string.Empty、string=&quot;&quot;、s.length==0

Console.WriteLine("".Equals(string.Empty));//结果:true String.Empty和string=””是一样的,同样都是需要占用内存空间<空字符串>:但优先推荐使用string.Empty 还一种高效判断方法(s.length==0)来判断字符串是否为空字符串: [注意]:null string str=null则是表示str未指向任何对象.

StringHelper--封转自己的字符串工具类

我们每次开发项目,都会有很多的关于字符串的处理,字符串的处理太常见了,无法避免,那么这时如果可以把常用的字符串处理封装成类,在以后的开发中应该会减少一些工作量,下面代码对一些常用的字符串处理进行了封装,如果遇上了其他的关于字符串处理可以不断加入进来. 现在已经实现的功能有: 1,判断一个字符串是否为 null 或 空串 或 空白, 2,判断一个字符串是否不是null且不是空串.不是空白, 3,判断一个字符串变量是否为 null, 4,判断一个字符串是否为 空串, 5,比较两个非空(不是null,

C#-VS字符串、日期、时间和时间段

小知识 哈希表,内存中的对象,用速度很快的哈希表当字典表,记录主键和内容. @,遇到转义字符,不转义,直接输出,即就是.转义字符是反斜杠/ 全部的内置类型都用类和结构描述.值类型用结构,引用类型用类.如int用system.Int32结构,double用system.Double结构,bool用system.Boolean结构. 对类来说,null是没有引用,到字符串,空串也是有引用对象,只是对象是内容是空的. String类 string类型实际上是string类的对象,字符串.类的实例都是对

string 字符串 的一些使用方法

Java语言中,把字符串作为对象来处理,类String就可以用来表示字符串(类名首字母都是大写的). 字符串常量是用双引号括住的一串字符. 例如:"Hello World" String表示字符串变量 String用来可以创建字符串对象,String使用示例: 1 String s=new String() ;   //生成一个空串 2 String s1="Hello World"; //声明s1为字符串"Hello World"的引用 1 S

JAVA基础,字符串

字符串String(一个字符数组,常量,不可变): 1. 创建并初始化字符串: 1). 使用字符串常量直接初始化 String s="hello!"; 2). 使用构造方法创建并初始化 String();//初始化一个对象,表示空字符序列 String(value);//利用已存在的字符串常量创建一个新的对象 String (char[] value);//利用一个字符数组创建一个字符串 String(char[] value,int offset,int count);//截取字符数