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입니다.
id==null은 참조 ID가 어떤 개체도 가리키지 않고 단지 참조일 뿐이라는 의미입니다. Java의 특정 개체만 메서드를 호출할 수 있습니다(여기서는 equals()입니다). 따라서 id==null이 equals()을 던질 때 NullPointerException을 호출합니다.
이 코드는 빈 문자열을 비교하기 위해 같음을 사용하지 않고 잘못 작성되었으며 탭, 캐리지 리턴 등 빈 문자열이 많이 있습니다. 검사할 수 있는 기성 함수가 없습니다. Apache Commons의 StingUtils와 같이 사용됩니다. .isBlank 메서드와 Guava의 Strings.isNullOrEmpty 메서드는 모두 null 및 빈 문자열의 상태를 확인할 수 있습니다.
우선
의 의미를 이해해야 합니다.id!=""
쓰는 방식이 틀렸어요.!id.equals("")
로 쓰세요.둘째,
==
과equals
==
은 두 개체가 동일한 개체에 대한 참조임을 의미합니다.==null
은 이 개체가 어떤 인스턴스 개체에 대한 참조도 아니며 개체가 비어 있음을 의미합니다.equals
은 String 클래스의 메서드로, 두 문자열의 내용이 동일함을 나타냅니다.늘 이렇게 써왔는데 왜냐고 묻고 싶습니다.
빈 문자열에는 실제로 같음이 필요합니다. 그렇지 않으면 오류가 발생합니다. null을 사용할 수 있습니다!=
다음 코드는 결과가 거짓입니다
으아악따라서
과 같이 빈 문자열을 확인하려면 같음을 사용해야 합니다. 으아악또는 길이를 사용하여
과 같은 CharSequence를 결정하고 확장합니다. 으아악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
입니다.그렇습니다. (●'◡'●)
id==null
은 참조 ID가 어떤 개체도 가리키지 않고 단지 참조일 뿐이라는 의미입니다. Java의 특정 개체만 메서드를 호출할 수 있습니다(여기서는equals()
입니다). 따라서id==null
이equals()
을 던질 때NullPointerException
을 호출합니다.이 코드는 빈 문자열을 비교하기 위해 같음을 사용하지 않고 잘못 작성되었으며 탭, 캐리지 리턴 등 빈 문자열이 많이 있습니다. 검사할 수 있는 기성 함수가 없습니다. Apache Commons의 StingUtils와 같이 사용됩니다. .isBlank 메서드와 Guava의 Strings.isNullOrEmpty 메서드는 모두 null 및 빈 문자열의 상태를 확인할 수 있습니다.
그래도 ==와 같음의 차이, ""와 null의 차이를 이해해야 합니다.
==는 값이 같은지 또는 참조 유형의 주소가 같은지 비교하는 것입니다. >equals는 참조형 주소의 값, 즉 내용이 같은지를 비교하는 것입니다