1. 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"); } }