1. 문자열 str이 비어 있는지 확인하는 방법은 다음과 같습니다.
1.str == null
3. length 4. str.isEmpty();
참고: length는 속성입니다. 일반적으로 컬렉션의 크기를 얻기 위해 컬렉션 클래스 개체가 소유하는 속성입니다.
예: array.length는 배열의 길이를 가져오는 것입니다.
length()는 일반적으로 문자열 클래스 객체에 이 메서드가 있으며 이 메서드도 문자열의 길이를 가져옵니다.
예: string.length();
설명:
1. null은 이 문자열이 이때 아무 것도 가리키지 않는다는 의미입니다. 이때 해당 메서드를 호출하면 null 포인터 예외가 발생합니다.
2. ""는 길이가 0인 문자열을 가리킨다는 뜻으로 이때 해당 메서드를 호출해도 안전합니다.
3. Null은 객체가 아닙니다. ""는 객체이므로 null은 공간을 할당하지 않습니다. ""는 공간을 할당합니다. 예:
String str1 = str 참조가 비어 있습니다.
String str2 = ""; str은 빈 문자열을 나타냅니다.
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) { }
JudgeString2는 125ms가 걸립니다.
JudgeString3은 234ms가 걸립니다.
JudgeString4는 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"); } }Java에서 문자열이 비어 있는지 판단하는 문제에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!