찾다

 >  Q&A  >  본문

Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?

if(id!=null&&id!="")
代码中经常这样写,空字符串跟null 都不用equals吗?

大家讲道理大家讲道理2890일 전525

모든 응답(8)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 17:53:37

    우선 id!="" 쓰는 방식이 틀렸어요. !id.equals("")로 쓰세요.
    둘째, ==equals

    의 의미를 이해해야 합니다.
    1. ==은 두 개체가 동일한 개체에 대한 참조임을 의미합니다. ==null은 이 개체가 어떤 인스턴스 개체에 대한 참조도 아니며 개체가 비어 있음을 의미합니다.

    2. equals은 String 클래스의 메서드로, 두 문자열의 내용이 동일함을 나타냅니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    늘 이렇게 써왔는데 왜냐고 묻고 싶습니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    빈 문자열에는 실제로 같음이 필요합니다. 그렇지 않으면 오류가 발생합니다. null을 사용할 수 있습니다!=

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    다음 코드는 결과가 거짓입니다

    으아악

    따라서

    과 같이 빈 문자열을 확인하려면 같음을 사용해야 합니다. 으아악

    또는 길이를 사용하여

    과 같은 CharSequence를 결정하고 확장합니다. 으아악

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:53:37

    1. equals() 클래스에 Object 메소드가 존재합니다. Integer, Long 등의 모든 패키징 클래스에서는 클래스를 직접 작성하여 사용합니다. 클래스 equals() 메소드에서 이 메소드의 효과는 "=="와 동일하며 두 클래스의 객체 참조가 동일한지 여부를 결정하고 래퍼 클래스에서 equals는 객체는 동일합니다.
    2. if(id.equals("")&&id!=null)으로 판단하면 NullPoint 문제가 발생합니다. id 값이 null인 경우 equals() 메서드 호출을 제거하면 예외가 발생합니다.

    3.

    위 프로그램을 설명하세요str1 == str2비교하는 것은 두 참조가 동일한지 여부입니다. 우리가 선언한 문자열은 str1일 때 상수 풀에 저장됩니다.str3은 상수 풀에 abc 문자열이 있는지 먼저 확인합니다. 그렇다면 직접 참조합니다. str2는 새로운 객체를 직접 생성하기 때문에 주소는 str1과 달라야 합니다. 그렇다면 intern 메서드를 사용한 후에도 왜 동일합니까?
    intern 메서드를 호출할 때 풀에 이 String 개체와 동일한 문자열이 이미 포함되어 있으면 풀에 있는 문자열이 반환됩니다. 시간이 지나면 새 문자열이 생성되지 않습니다. 상수 풀의 문자열은 계속 참조되므로 str2.intern() == str1의 반환 값은 여전히 ​​true입니다.

    그렇습니다. (●'◡'●)

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 17:53:37

    id==null은 참조 ID가 어떤 개체도 가리키지 않고 단지 참조일 뿐이라는 의미입니다. Java의 특정 개체만 메서드를 호출할 수 있습니다(여기서는 equals()입니다). 따라서 id==nullequals()을 던질 때 NullPointerException을 호출합니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    이 코드는 빈 문자열을 비교하기 위해 같음을 사용하지 않고 잘못 작성되었으며 탭, 캐리지 리턴 등 빈 문자열이 많이 있습니다. 검사할 수 있는 기성 함수가 없습니다. Apache Commons의 StingUtils와 같이 사용됩니다. .isBlank 메서드와 Guava의 Strings.isNullOrEmpty 메서드는 모두 null 및 빈 문자열의 상태를 확인할 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    그래도 ==와 같음의 차이, ""와 null의 차이를 이해해야 합니다.
    ==는 값이 같은지 또는 참조 유형의 주소가 같은지 비교하는 것입니다. >equals는 참조형 주소의 값, 즉 내용이 같은지를 비교하는 것입니다

    회신하다
    0
  • 취소회신하다