Maison  >  Article  >  Java  >  Une brève analyse du problème consistant à déterminer si une chaîne String est vide en Java

Une brève analyse du problème consistant à déterminer si une chaîne String est vide en Java

高洛峰
高洛峰original
2017-01-22 11:18:491633parcourir

1. Les méthodes pour déterminer si une chaîne str est vide sont :

1. str == null ".equals(str); length <= 0;
4. str.isEmpty();
Remarque : la longueur est un attribut. Généralement, il s'agit d'un attribut appartenant aux objets de classe de collection pour obtenir la taille de la collection.
Par exemple : array.length doit obtenir la longueur du tableau.
length() est une méthode. Généralement, les objets de classe chaîne ont cette méthode, qui obtient également la longueur de la chaîne.
Par exemple : string.length();
Explication :
1. null signifie que cette chaîne ne pointe vers rien. Si vous appelez sa méthode à ce moment, une exception de pointeur nul se produira.
2. "" signifie qu'il pointe vers une chaîne d'une longueur de 0, et il est sûr d'appeler sa méthode à ce moment-là.
3. Null n'est pas un objet, "" est un objet, donc null n'alloue pas d'espace, "" alloue de l'espace, par exemple :
String str1 = null la référence str est vide
String str2 = ""; str fait référence à une chaîne vide
str1 n'est pas encore un objet instancié, mais str2 a déjà été instancié.
Les objets sont comparés en utilisant des égaux et null est comparé en utilisant le signe égal.
Si str1=null ; l'écriture suivante est fausse :
if(str1.equals("")||str1==null){ }
L'écriture correcte est if(str1==null|| str1 .equals("")){ //Ainsi, lorsque vous jugez si une chaîne est vide, jugez d'abord s'il s'agit d'un objet, et si c'est le cas, jugez ensuite s'il s'agit d'une chaîne vide}
4. Par conséquent, jugez si une chaîne est vide, assurez-vous d’abord qu’elle n’est pas nulle, puis déterminez sa longueur.
String str = xxx;
if(str != null && str.length() != 0) { }

2. Voici quatre façons de déterminer si une chaîne est vide dans Java :

L'efficacité d'exécution des quatre méthodes est la suivante :

JudgeString1 prend 625 ms

JudgeString2 prend 125 ms

JudgeString3 prend 234 ms
JudgeString4 prend : 109 ms

Pour plus d'articles liés à Java sur le problème de juger si une chaîne est vide, veuillez faire attention au site Web PHP chinois !
/**
 * 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");
    }
}
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn