내 문자열이 null인지 확인하는 방법? 그래서 나는 이것을 시도했다. if (!myString.equals(“”)) { doSomething } 이 if

문자열에 의미있는 값이있는 경우에만 일부 작업을 수행하려고합니다. 그래서 나는 이것을 시도했다.

if (!myString.equals("")) {
doSomething
}

if (!myString.equals(null)) {
doSomething
}

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}

if ( myString.length()>0) {
doSomething
}

그리고 모든 경우에 내 프로그램 doSomething은 내 문자열이 비어 있다는 사실에도 불구하고. 와 같습니다 null. 그래서 무엇이 잘못 되었나요?

추가 :

문제의 원인을 찾았습니다. 변수는 문자열로 선언되었으며 결과적 null으로이 변수에 지정된 변수는 "null"! 그래서 if (!myString.equals("null"))작동합니다.



답변

if (myString != null && !myString.isEmpty()) {
  // doSomething
}

추가 의견으로, equals계약 에서이 용어를 알고 있어야합니다 .

보낸 사람 Object.equals(Object):

비 – 널 레퍼런스 값 x, x.equals(null)해야한다 return false.

비교하는 방법 nullx == null및 을 사용하는 것 x != null입니다.

또한, x.fieldx.method()발생 NullPointerException하는 경우 x == null.


답변

경우 myString이며 null, 다음 호출 myString.equals(null)또는 myString.equals("")실패합니다 NullPointerException. 널 변수에서 인스턴스 메소드를 호출 할 수 없습니다.

다음과 같이 null을 먼저 확인하십시오.

if (myString != null && !myString.equals("")) {
    //do something
}

이 경우 단락 평가 를 사용 하여 .equalsif myString가 널 검사에 실패 하지 않습니다 .


답변

아파치 커먼즈 StringUtils.isNotEmpty가 가장 좋은 방법입니다.


답변

myString이 실제로 널인 경우 NPE (Null Pointer Exception)로 참조에 대한 호출이 실패합니다. Java 6부터는 길이 검사 대신 #isEmpty 를 사용 하십시오 (어쨌든 검사와 함께 빈 문자열을 새로 작성하지 마십시오).

if (myString != null &&  !myString.isEmpty()){
    doSomething();
}

또한 String 리터럴과 비교할 때 null 검사가 필요하지 않도록 명령문을 되돌릴 수 있습니다.

if ("some string to check".equals(myString)){
  doSomething();
} 

대신에 :

if (myString != null &&  myString.equals("some string to check")){
    doSomething();
}


답변

작동 !!!!

if (myString != null && !myString.isEmpty()) {
    return true;
}
else {
    return false;
}


답변

myString객체가 null다음 인지 확인해야합니다 .

if (myString != null) {
    doSomething
}


답변

문자열이 null이면 다음과 같은 호출에서 NullReferenceException이 발생합니다.

myString.equals (null)

그러나 어쨌든, 나는 이와 같은 방법이 당신이 원하는 것이라고 생각합니다.

public static class StringUtils
{
    public static bool isNullOrEmpty(String myString)
    {
         return myString == null || "".equals(myString);
    }
}

그런 다음 코드에서 다음과 같이 할 수 있습니다.

if (!StringUtils.isNullOrEmpty(myString))
{
    doSomething();
}