Java에서 늘과 문자열을 대조하는 방법은 무엇입니까?
Java에서 문자열과 늘을 대조하려면 어떻게 해야 하나요?사용하고 있다
stringname.equalsignorecase(null)
효과가 없어요.
string == null
는 객체가 늘인지 아닌지를 비교합니다. string.equals("foo")
는 그 오브젝트 내부의 값을 비교합니다. string == "foo"
오브젝트가 동일한지 여부를 확인하려고 하기 때문에 항상 동작하는 것은 아닙니다.
답변 더긴긴 longer longer:
이렇게 하면 다음과 같이 동작하지 않습니다.
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
그 이유는 foo가 null이기 때문에 .equals가 무엇인지 알 수 없기 때문에 .equals를 호출할 수 있는 객체가 존재하지 않기 때문입니다.
당신이 원하는 것은 다음과 같습니다.
String foo = null;
if (foo == null) {
// That will work.
}
Strings를 다룰 때 null로부터 자신을 보호하는 일반적인 방법은 다음과 같습니다.
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
만약 foo가 null이었다면, 조건의 후반부를 평가하지 않고, 모든 것이 정상입니다.
변수 대신 String 리터럴을 사용하는 경우 다음과 같은 간단한 방법이 있습니다.
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을 미리 확인하고 예외가 발생하지 않도록 해야 합니다.
제 머릿속에는 두 가지 이유가 있습니다.첫째, 예외는 느리고 null에 대한 체크는 빠르지만 JVM에서 예외가 발생하면 시간이 많이 걸립니다.둘째, 늘 포인터를 미리 확인하기만 하면 코드를 읽고 유지하기가 훨씬 쉬워집니다.
s == null
안될까요?
물론 효과가 있지.당신은 코드의 중요한 부분을 놓치고 있어요.이렇게 하면 됩니다.
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
;)
Android에서 작업하는 경우 TextUtils 메서드를 사용합니다.
TextUtils.isEmpty(str) : 문자열이 늘 또는 0-length이면 true를 반환합니다.매개 변수: 검사할 문자열 str 스트링이 null이거나 길이가 0인 경우 true를 반환합니다.
if(TextUtils.isEmpty(str)) {
// str is null or lenght is 0
}
다음은 이 메서드의 소스 코드입니다.당신은 dircly를 사용할 수 있습니다.
/**
* 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;
}
대등한 것의 실장을 보면Ignore Case 메서드에서는 다음 부품을 찾을 수 있습니다.
if (string == null || count != string.count) {
return false;
}
그것은 .false
null
. 은 반환되어야 할 이기 때문입니다. 왜냐하면, 이게 다시 돌아와야 할 유일한 경우이기 때문입니다.true
가 Ignore Case a Ignore Case에서 된 경우null String
String nullString = null;
nullString.equalsIgnoreCase(null);
반드시 Null Pointer가 됩니다.예외.
는 null인지된 것이 equals equals equals equals는 equals equals로 수 .null
.
좀 이상해 보이긴 하지만...
stringName == null || "".equals(stringName)
이러한 방법으로 작업을 수행하는 데 문제가 발생한 적이 없으며, 잠재적인 null point 예외를 피하면서 더 안전하게 확인할 수 있는 방법입니다.
MYN의 대답이 뭐가 잘못됐는지 모르겠어요.
if (yourString != null) {
//do fun stuff with yourString here
}
위의 null check는 괜찮습니다.
문자열 참조가 늘 참조가 아닌 다른 문자열과 동일한지(대문자와 대소문자를 무시하는지) 확인하려는 경우 다음과 같이 하십시오.
String x = "this is not a null reference"
if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) {
//do fun stuff
}
비교하고 있는 두 문자열에 대해 null 참조가 있는지 여부가 의심될 경우 Null Pointer의 가능성을 피하기 위해 둘 중 하나 이상의 문자열에 대해 null 참조가 있는지 확인해야 합니다.예외.
문자열에 "null" 값이 있으면 다음을 사용할 수 있습니다.
if(null == stringName){
[code]
}
else
[Error Msg]
그것을 당신의 클래스로 가져오다.
import org.apache.commons.lang.StringUtils;
그리고 그것을 사용하면 둘 다 진실로 반환될 것이다.
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");
}
351809입니다.stringname.equalsignorecase(null)
는 Null Null 포인터를 슬로우합니다.★★★★★★ 。
문자열 있어요.stringname
이는 다음 2가지 조건을 따릅니다.
stringname
에는 몇 가지 비표준 문자열 값("컴퓨터")이 있습니다.
는, 으로 동작합니다.
"computer".equalsignorecase(null)
했던 반응이 거예요.false
.stringname
가지고 있다null
추가:
에서는, 코드가 as 여 、 will 、 、 여 、 여 、 here
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(""));
}
Java 7에서는
if (Objects.equals(foo, null)) {
...
}
은 반환될 것이다.true
가 '''일 '' 경우null
.
올바르게 이해하고 있다면, 이것으로 충분합니다.
if(!stringname.isEmpty())
// an if to check if stringname is not null
if(stringname.isEmpty())
// an if to check if stringname is null
오래전에 답장이 온 건 알지만 게시된 건 본 적이 없어서 제가 하는 일을 공유하려고요.코드 가독성에는 그다지 좋지 않지만, 여러 개의 null 검사를 수행해야 하는 경우에는 다음을 사용합니다.
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
이 예에서는 trim이 문자열로 호출됩니다.이 예에서는 문자열이 늘 또는 공백일 경우 NPE가 느려집니다.단, 같은 줄에서는 늘 또는 공백 여부를 확인할 수 있기 때문에 블록의 경우 포맷하기 어려운 (더 많은) 톤이 되지 않습니다.
이 경우,value
반환된 값이 null입니다. 사용:
if(value.isEmpty());
가끔 null을 확인합니다.if(value == null)
Java에서는 String이 null인 경우에도 true가 되지 않을 수 있습니다.
Apache String Utils 클래스가 이 작업을 수행합니다. StringUtils.equals(col1, col2)
col1, col2, 또는 둘 다 늘일 경우 올바르게 동작합니다.
StringUtils JavaDoc 페이지 전체를 읽어보십시오.String 조작 및/또는 비교 문제가 모두 해결된 것은 아닙니다.
마지막으로 누군가가 이 바보 같은 질문을 했을 때, 대답은 다음과 같았다:
someString.equals("null")
이 "수정"은 어떻게 하면 더 큰 문제를 해결할 수 있는가 하는 문제만을 숨깁니다.null
된다"null"
하지만 애초에 말이야.
두 가지 방법이 있습니다.String==syslog 또는 string.syslog()라고 합니다.
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
'programing' 카테고리의 다른 글
Selenium - 페이지가 완전히 로드될 때까지 기다리는 방법 (0) | 2023.01.14 |
---|---|
Python에서 '@=' 기호는 무엇입니까? (0) | 2023.01.14 |
비트맵/파일 경로에서 그리기 가능 (0) | 2023.01.14 |
Vue - 중첩된 개체의 데이터를 표시하려고 할 때 렌더에 오류가 발생했습니다. (0) | 2023.01.14 |
JavaScript에서 null 값을 확인하려면 어떻게 해야 합니까? (0) | 2023.01.14 |