용법:
(유형 변수 인스턴스of 클래스 | 인터페이스)
효과:
instanceof 연산자는 이전 객체가 다음 클래스의 인스턴스인지, 하위 클래스 또는 구현 클래스의 인스턴스인지 확인하는 데 사용됩니다. 그렇다면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
알아채다:
・instanceof 앞의 피연산자의 컴파일 타임 유형이 다음 클래스와 동일하거나, 다음 클래스와 부모-자식 상속 관계에 있고, 그렇지 않으면 컴파일 오류가 발생합니다.
간단한 예:
다음과 같이 코드 코드를 복사합니다 .
/**
* 연산자 인스턴스
* @author 관리자
*
*/
공개 클래스 TestInstanceof {
공개 정적 무효 메인(String[] args) {
//hello를 선언할 때 Object 클래스를 사용하면 컴파일된 hello 유형은 Object입니다.
//Object 클래스는 모든 클래스의 상위 클래스이지만 hello의 실제 유형은 String입니다.
개체 안녕하세요 = "안녕하세요";
//String은 Object의 하위 클래스이며 인스턴스 작업을 수행하고 true를 반환할 수 있습니다.
System.out.println("문자열은 개체 클래스의 인스턴스입니까:"
+ (안녕하세요 객체 인스턴스));
//진실
System.out.println("문자열은 String의 인스턴스입니까:"
+ (안녕하세요 String 인스턴스));
//거짓
System.out.println("문자열은 Math 클래스의 인스턴스입니까?"
+ (안녕하세요 Math 인스턴스));
//String은 Comparable 인터페이스를 구현하므로 true를 반환합니다.
System.out.println("문자열은 Comparable 클래스의 인스턴스입니까:"
+(안녕하세요 인스턴스of 비교 가능));
/**
* String은 Math 클래스도 아니고 Math 클래스의 상위 클래스도 아니므로 다음 코드가 잘못 컴파일됩니다.
*/
//문자열 a = "안녕하세요";
//System.out.println("문자열은 Math 클래스의 인스턴스입니까?"
// + (Math의 인스턴스));
}
}
실행 결과:
다음과 같이 코드 코드를 복사합니다 .
문자열이 객체 클래스의 인스턴스인지 여부: true
문자열이 String의 인스턴스인지 여부: true
문자열이 Math 클래스의 인스턴스인지 여부: false
문자열이 Comparable 클래스의 인스턴스인지 여부: true
일반적으로 강제 형식 변환을 수행하기 전에 먼저 이전 개체가 후자 개체의 인스턴스인지 여부와 변환이 성공할 수 있는지 여부를 확인하여 코드의 견고성을 보장합니다.