ホームページ  >  記事  >  Java  >  Javaで文字列Stringが空かどうかを判断する問題の簡単な分析

Javaで文字列Stringが空かどうかを判断する問題の簡単な分析

高洛峰
高洛峰オリジナル
2017-01-22 11:18:491633ブラウズ

1. 文字列 str が空かどうかを判断するメソッドは次のとおりです:

1, str == null;
3, str.length 注: length は、コレクションのサイズを取得するために一般的なコレクション オブジェクトが持つ属性です。 ️例: array.length は配列の長さを取得します。 )LENGTH()はメソッドであり、通常、文字列クラスのオブジェクトにはこのメソッドがあり、文字列の長さも取得します。例: string.length ();
説明:
1、null は、この文字列が何も指していないことを意味します。この時点で呼び出した場合、空のポインターは異常になります。
2. "" は、長さが 0 の文字列を指しており、この時点でそのメソッドを安全に呼び出すことができることを意味します。
3. Null はオブジェクトではありません。「」はオブジェクトなので、null はスペースを割り当てません。例えば、次のようになります。
String str1 = null; str 参照は空です
String str2 = "";空の文字列
str1 はまだインスタンス化されたオブジェクトではありませんが、str2 はすでにインスタンス化されています。
オブジェクトは等号を使用して比較され、null は等号を使用して比較されます。
str1=null; の場合、次の記述は間違っています:
if(str1.equals("")||str1==null){ }
正しい記述は if(str1==null||str1.equals("") ) ){ //したがって、文字列が空であるかどうかを判断するときは、まずそれがオブジェクトであるかどうかを判断し、オブジェクトである場合は、それが空の文字列であるかどうかを判断します}
4. したがって、文字列が空であるかどうかを判断するには、まず最初に行う必要があります。 null でないことを確認してから、その長さを判断します。
String str = xxx;
if(str != null && str.length() != 0) { }

2. Java で文字列が空かどうかを判断するには、次の 4 つの方法があります。

4 つのメソッドが実行されます。効率は次のとおりです:

JudgeString1 は 625 ミリ秒かかります

JudgeString2 は 125 ミリ秒かかります

JudgeString3 は 234 ミリ秒かかります

JudgeString4 は 109 ミリ秒かかります

/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 14-1-16
 * Time: 上午10:43
 * 判断字符串是否为空的效率问题
 */
public class JudgeStringIsEmptyOrNot {
    public static void main(String[] args) {
        JudgeString1("w_basketboy", 10000);
        JudgeString2("w_basketboy", 10000);
        JudgeString3("w_basketboy", 10000);
        JudgeString4("w_basketboy", 10000);
    }
    /**
     * 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低;
     * 方法二: 比较字符串长度, 效率高, 是最好的一个方法;
     * 方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二;
     * 方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多;
     */
    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("function4耗时:" + (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");
    }
}

文字列 String が空かどうかの判断に関するその他の Java 関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。