문자열에 의미있는 값이있는 경우에만 일부 작업을 수행하려고합니다. 그래서 나는 이것을 시도했다.
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
.
비교하는 방법 null
은 x == null
및 을 사용하는 것 x != null
입니다.
또한, x.field
및 x.method()
발생 NullPointerException
하는 경우 x == null
.
답변
경우 myString
이며 null
, 다음 호출 myString.equals(null)
또는 myString.equals("")
실패합니다 NullPointerException
. 널 변수에서 인스턴스 메소드를 호출 할 수 없습니다.
다음과 같이 null을 먼저 확인하십시오.
if (myString != null && !myString.equals("")) {
//do something
}
이 경우 단락 평가 를 사용 하여 .equals
if 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();
}