programing

string.is Empty() 또는 ""equals(string)"를 사용해야 합니까?

firstcheck 2022. 8. 2. 23:19
반응형

string.is Empty() 또는 ""equals(string)"를 사용해야 합니까?

난 보통 이걸 테스트하고 있어string == null그래서 나는 null-safe 테스트에 대해 별로 염려하지 않는다.어떤 걸로 할까요?

String s = /* whatever */;
...
if (s == null || "".equals(s))
{
    // handle some edge case here
}

또는

if (s == null || s.isEmpty())
{
    // handle some edge case here
}

그 점에 대해서 - 그렇다isEmpty()다른 일도 하다return this.equals("");또는return this.length() == 0;?

주요 장점"".equals(s)null 체크는 필요 없습니다.(equals인수를 확인하고 반환한다.false만약 그것이 무효라면)은 신경 쓰지 않는 것 같습니다.걱정 안 하신다면snull(또는 체크 중)이 아닌 경우, 저는 반드시s.isEmpty()체크하고 있는 것을 정확하게 나타내고 있습니다.s빈 문자열인지 아닌지가 아니라 빈 문자열입니다.

String.equals("")실제로는, 단순한 네트워크보다 조금 느립니다.isEmpty()call. 문자열은 불변하기 때문에 생성자에서 초기화된 카운트 변수를 저장합니다.

isEmpty()는 count 변수를 0과 비교하고 equals는 유형, 문자열 길이를 확인한 후 크기가 일치하는 경우 문자열 위에서 반복하여 비교합니다.

그래서 당신의 질문에 답하기 위해isEmpty()사실 훨씬 덜 할 거야! 그건 좋은 일이야.

다른 문제 말고도 고려해야 할 점이 있다면isEmpty()1.6에서 도입되었기 때문에 사용하면 Java 1.5 이하에서는 코드를 실행할 수 없습니다.

Apache Commons String Utils is Empty() 또는 is Not Empty()를 사용할 수 있습니다.

그건 사실 중요하지 않아. "".equals(str)제 의견으로는 더 명확합니다.

isEmpty()돌아온다count == 0;

나는 글을 썼다.Tester퍼포먼스를 테스트할 수 있는 클래스:

public class Tester
{
    public static void main(String[] args)
    {
        String text = "";

        int loopCount = 10000000;
        long startTime, endTime, duration1, duration2;

        startTime = System.nanoTime();
        for (int i = 0; i < loopCount; i++) {
            text.equals("");
        }
        endTime = System.nanoTime();
        duration1 = endTime - startTime;
        System.out.println(".equals(\"\") duration " +": \t" + duration1);

        startTime = System.nanoTime();
        for (int i = 0; i < loopCount; i++) {
            text.isEmpty();
        }
        endTime = System.nanoTime();
        duration2 = endTime - startTime;
        System.out.println(".isEmpty() duration "+": \t\t" + duration2);

        System.out.println("isEmpty() to equals(\"\") ratio: " + ((float)duration2 / (float)duration1));
    }
}

그 사실을 알게 된서리를.isEmpty()시간의 절반 가량이 걸렸다.equals("").

언급URL : https://stackoverflow.com/questions/3321526/should-i-use-string-isempty-or-equalsstring

반응형