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
만약 그것이 무효라면)은 신경 쓰지 않는 것 같습니다.걱정 안 하신다면s
null(또는 체크 중)이 아닌 경우, 저는 반드시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
'programing' 카테고리의 다른 글
Firebase + Vue + Quasar Framework에서 프로필 사진 변경 (0) | 2022.08.03 |
---|---|
*p++는 *p+=1과 왜 다른가요? (0) | 2022.08.02 |
vuex 스토어 + 쿠키와 관련된 문제 (0) | 2022.08.02 |
Vue.js 서버에 대한 요구 체인 (0) | 2022.08.02 |
vuelidate를 사용하여 중첩된 개체 어레이 검증 (0) | 2022.08.02 |