728x90

자바 동영상 강좌를 들으면서 자바 개념을 학습중이다.

"intanceof 연산자가 이거다"라고 쏙 머리속에 들어오지 않지만 블로깅하고 요약해서 적어둔다.


instanceof 연산자
- 프로그램 실행시 참조 데이터형을 검사하기 위해 사용되는 연산자이다.
- 형변환이 가능한지 묻는 연산자이다.
- 형변환이 가능하면 true, 가능하지 않으면 false를 반환한다.

A instanceof B
- A : Object
- B : Class or Interface
- B가 클래스일 경우에는 A가 반드시 B 클래스와 상속관계에 있어야먄 유효하다.
  B 클래스 상속관계 : A가 B클래스의 객체이거나 하위 클래스의 객체
  A와 B가 상속관계가 없을 경우 캐스팅이 불가능하기에 컴파일 타임에 에러를 발생시킨다.
- B가 인터페이스일 경우에는 컴파일 에러는 발생하지 않는다. 런타임 에러가 발생한다.

if(animal instanceof Dog){
    System.out.println("멍멍이 짖는 소리");
} else if(animal instance of Duck){
    System.out.println("오리가 우는 소리");
}


stackoverflow 에 나온 Answer 예제

public class Animal{ float age; }
public class Lion extends Animal { int claws;}
public class Jungle {
    public static void main(String args[]) {

        Animal animal1 = new Animal(); // B클래스
        Animal animal2 = new Lion();  // B클래스의 하위 객체
        Lion lion1 = new Lion();
        Animal animal3 = new Animal();
        Lion lion2 = new Animal();   //won't compile

        if(animal1 instanceof Lion)   //false
        if(animal2 instanceof Lion)   //true
        if(lion1 insanceof Lion)      //true
        if(animal3 instanceof Animal) //true
    }
}



'안드로이드 > Java 문법' 카테고리의 다른 글

Java BubbleSort  (0) 2019.05.13
java Singleton Design Pattern  (0) 2018.09.24
Java static 변수 이해하기  (0) 2017.10.20
[Java] 정보은닉과 캡슐화  (0) 2017.10.16
자바 기본 데이터형과 크기  (0) 2017.10.11
블로그 이미지

Link2Me

,