programing

Java에서 늘과 문자열을 대조하는 방법은 무엇입니까?

minecode 2023. 1. 14. 09:51
반응형

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;
}

그것은 .falsenull. 은 반환되어야 할 이기 때문입니다. 왜냐하면, 이게 다시 돌아와야 할 유일한 경우이기 때문입니다.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가지 조건을 따릅니다.

  1. stringname에는 몇 가지 비표준 문자열 값("컴퓨터")이 있습니다.
    는, 으로 동작합니다.
    "computer".equalsignorecase(null)
    했던 반응이 거예요.false.
  2. 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

반응형