Java에서 null은 무엇입니까?
Java에서 null에 대해 얼마나 많은 것을 찾을 수 있습니까? 나는 사용하고있다
stringname.equalsignorecase(null)
하지만 작동하지 않습니다.
string == null
객체가 null인지 비교합니다. string.equals("foo")
해당 객체 내부의 값을 비교합니다. string == "foo"
항상 작동합니다. 점착성이 가치가 있습니다.
더 긴 답변 :
이것을 시도하면 다음과 같이 작동하지 않습니다.
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
그 이유는 foo가 무엇인지 .equals가 무엇인지 알지 못하기 때문입니다. .equals를 호출 할 개체가 없습니다.
당신이 원했던 것은 :
String foo = null;
if (foo == null) {
// That will work.
}
Null을 처리 할 때 null에 대해 자신을 보호하는 일반적인 방법은 다음과 같습니다.
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
그렇게하면 foo가 null이면 조건부의 후반 평가하지 않고 모든 것이 정상입니다.
변수 대신에 쉬운 리터럴을 사용하는 경우 쉬운 방법은 다음과 사용할 수 있습니다.
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
이 문제를 해결하려는 경우 Apache Commons에 null-safe String 작업을 제공하는 StringUtils 클래스가 있습니다.
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
또 다른 응답은 농담 이렇게이며해야합니다.
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
그러지 놓치지 마세요. 예외적 인 오류에 예외를 발생합니다. null이 예상되는 경우 미리 확인하고 예외가 발생하지 않도록해야합니다.
제 머릿속에는 두 가지 이유가 있습니다. 첫째, 예외는 느립니다. null 검사는 빠르지 만 JVM에서 예외가 발생하면 많은 시간이 행사. 둘째, 미리 널 포인터 만 확인하면 코드를 읽고 유지하기가자가 소유.
s == null
작동하지 보편성 보장?
물론 작동합니다. 코드의 중요한 부분을 놓치고 있습니다. 다음과 같이하면됩니다.
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
;)
TextUtils 메서드를 사용합니다.
TextUtils.isEmpty (str) : 문자열이 null이거나 길이가 0이면 true를 반환합니다. 매개 변수 : str 검사 할 문자열 반환 값 : str이 null이거나 길이가 0이면 true
if(TextUtils.isEmpty(str)) {
// str is null or lenght is 0
}
아래는 이 메서드의 소스 코드 입니다.
/**
* Returns true if the string is null or 0-length.
* @param str the string to be examined
* @return true if str is null or zero length
*/
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
equalsIgnoreCase 메소드의 구현을 살펴보면 다음 부분을 찾을 수 있습니다.
if (string == null || count != string.count) {
return false;
}
따라서 false
인수가이면 항상 반환 됩니다 null
. 그리고 이것은 분명히 옳습니다. 왜냐하면 그것이 반환되어야하는 유일한 경우 true
는 equalsIgnoreCase가 null String
,하지만
String nullString = null;
nullString.equalsIgnoreCase(null);
확실히 NullPointerException이 발생합니다.
따라서 equals 메서드는에서 호출 할 수 없기 때문에 객체가 null인지 여부를 테스트하도록 설계되지 않았습니다 null
.
좀 이상해 보이지만 ...
stringName == null || "".equals(stringName)
이런 방식으로 문제가 발생하지 않았으며 잠재적 인 null 포인트 예외를 피하면서 더 안전한 방법으로 확인할 수 있습니다.
The MYYN의 답변에 무엇이 잘못되었는지 잘 모르겠습니다.
if (yourString != null) {
//do fun stuff with yourString here
}
위의 null 검사는 괜찮습니다.
당신이 문자열 참조하면 또 다른 문자열과 동일 (무시하는 경우)인지 확인하려는 경우 알고 널 참조되어 있지 않은 경우, 같은 것을 할 :
String x = "this is not a null reference"
if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) {
//do fun stuff
}
비교중인 두 문자열에 대해 null 참조가 있는지 여부에 대해 의심스러운 경우 NullPointerException 가능성을 피하기 위해 둘 중 하나 이상에서 null 참조를 확인해야합니다.
문자열에 "null"값이 있으면 다음을 사용할 수 있습니다.
if(null == stringName){
[code]
}
else
[Error Msg]
수업에서 가져와
import org.apache.commons.lang.StringUtils;
그런 다음 사용하면 둘 다 true를 반환합니다.
System.out.println(StringUtils.isEmpty(""));
System.out.println(StringUtils.isEmpty(null));
String == null로 확인할 수 있습니다.
이것은 나를 위해 작동합니다
String foo = null;
if(foo == null){
System.out.println("String is null");
}
물론 user351809 stringname.equalsignorecase(null)
는 NullPointerException을 발생시킵니다. 두 가지 가능한 조건을 따르는
문자열 객체가 stringname
있습니다.
stringname
null이 아닌 문자열 값 (예 : "computer")이 있습니다.
코드가 형식을 취하고
"computer".equalsignorecase(null)
예상 응답을false
.stringname
이null
값을 :
여기에 코드가 붙어 얻을 것이다, 같은
null.equalsignorecase(null)
그러나, 첫번째보기에 좋은 것하고 같은 반응을 기대 할 수있다true
,
하지만,null
실행] 할 수있는 객체가 아닌equalsignorecase()
방법.
따라서 사례 2로 인해 예외가 발생합니다.
내가 제안하는 것은 단순히 사용하는 것입니다.stringname == null
간단한 방법 :
public static boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
경우 value
반환 null의 경우, 사용하는 것입니다 :
if(value.isEmpty());
때로는 null을 확인하기 위해 if(value == null)
Java에서 String이 null 인 경우에도 true를 제공하지 않을 수 있습니다.
오래 전에 답변을 받았음을 알고 있지만이 글을 본 적이 없어서 제가하는 일을 공유하고 싶다고 생각했습니다. 이것은 코드 가독성에 특히 좋지는 않지만 일련의 null 검사를 수행해야하는 경우 다음을 사용하고 싶습니다.
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
이 예제에서 trim은 문자열에서 호출되어 문자열이 null이거나 공백이면 NPE를 던지지 만 같은 줄에서 null 또는 blank를 확인할 수 있으므로 (more ) if 블록을 포맷하기가 어렵습니다.
Java 7을 사용하면
if (Objects.equals(foo, null)) {
...
}
true
두 매개 변수가 모두 인 경우 반환 됩니다 null
.
마지막으로 누군가이 어리석은 질문을했을 때 대답은 다음과 같습니다.
someString.equals("null")
이 "수정"은 방법의 더 큰 문제 숨 깁니다 null
하게 "null"
하지만, 처음에 있습니다.
이를 수행하는 두 가지 방법이 있습니다 ..Say String == null 또는 string.equals () ..
public class IfElse {
public int ifElseTesting(String a){
//return null;
return (a== null)? 0: a.length();
}
}
public class ShortCutifElseTesting {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("enter the string please:");
String a=scanner.nextLine();
/*
if (a.equals(null)){
System.out.println("you are not correct");
}
else if(a.equals("bangladesh")){
System.out.println("you are right");
}
else
System.out.println("succesful tested");
*/
IfElse ie=new IfElse();
int result=ie.ifElseTesting(a);
System.out.println(result);
}
}
이 예제를 확인하십시오 .. 다음은 If Else의 바로 가기 버전의 또 다른 예제입니다.
참고 URL : https://stackoverflow.com/questions/2920525/how-to-check-a-string-against-null-in-java
'IT' 카테고리의 다른 글
iPhone : 기본적으로 UITableView 검색 창 패키지 (0) | 2020.09.15 |
---|---|
WPF : TextBox에서 프로그래밍 방식으로 포커스를 제거하는 방법 (0) | 2020.09.15 |
배열에서 가장 높은 키 / 보안 검색 (0) | 2020.09.15 |
Haskell 이후에 배울 언어는 무엇입니까? (0) | 2020.09.15 |
튜플에서 JavaScript 변수 할당 (0) | 2020.09.15 |