


A brief analysis of the problem of judging whether a string String is empty in java
Jan 22, 2017 am 11:18 AM1. The methods to determine whether a string str is empty are:
1. str == null;
2. "".equals(str);
3. str. length <= 0;
4. str.isEmpty();
Note: length is an attribute. Generally, the attribute owned by collection class objects is used to obtain the size of the collection.
For example: array.Length is the length of the array.
length() is a method. Generally, string class objects have this method, which also obtains the length of the string.
Explanation:
1. Null means that this string does not point to anything. If you call its method at this time, a null pointer exception will occur.
2. "" means that it points to a string with a length of 0, and it is safe to call its method at this time.
3. Null is not an object, "" is an object, so null does not allocate space, "" allocates space, for example:
String str1 = null; str reference is empty
String str2 = ""; str refers to an empty string
str1 is not an instantiated object yet, but str2 has already been instantiated.
Objects are compared with equals, and null is compared with the equal sign.
If str1=null; the following writing is wrong:
if(str1.equals("")||str1==null){ }
The correct writing is if(str1==null||str1 .equals("")){ //So when judging whether a string is empty, first judge whether it is an object, and if so, then judge whether it is an empty string}
4. Therefore, judge whether a string is Empty, first make sure it is not null, and then determine its length.
String str = xxx;
if(str != null && str.length() != 0) { }
JudgeString2 takes 125ms
JudgeString3 takes 234ms
JudgeString4 takes: 109ms
/** * 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"); } }

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Top 4 JavaScript Frameworks in 2025: React, Angular, Vue, Svelte

How does Java's classloading mechanism work, including different classloaders and their delegation models?

How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?

Node.js 20: Key Performance Boosts and New Features

Iceberg: The Future of Data Lake Tables

How can I implement functional programming techniques in Java?

How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?

How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?
