Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩수업
- 2024겨울방학 코딩부트캠프
- 2024우먼테크위크
- html
- 서울시여성가족재단
- 이것이 자바다
- 자율주행자동차
- 초등학교 코딩수업
- 코딩부트캠프
- 뚜루뚜루
- 드론
- 초등학생 겨울방학 놀이
- Spring Security
- 콜백함수
- 2023 ICT R&D 주간
- 스마트리움
- CSS
- Java
- 알티노
- spring boot
- 도서관 수업
- 초등학생 코딩수업
- jsp
- 핑퐁로봇
- transaction
- Cos Pro
- js
- 은평구립도서관
- spring
- 자바
Archives
- Today
- Total
블로그
[JAVA] instanceof 연산자 본문
참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위한 연산자
주로 조건문에 사용된다.
연산의 결과 -> boolean 타입인 true, false 반환
연산결과가 true 이면 참조변수가 검사한 타입으로 형변환이 가능하다는 것을 뜻한다.
참조변수 instanceof 타입(클래스명)
public class InstanceOf {
public static void main(String[] args) {
// instanceof : 연산자
// 피연산자 갯수 : 2개
// 왼쪽항 : 참조변수
// 오른쪽항 : Type(Class, Instance)
// 연산결과 : boolean (true / false)
Tiger tiger = new Tiger();
Animal animal = tiger;
boolean b1 = animal instanceof Cat; // false
boolean b2 = animal instanceof Tiger; // true
boolean b3 = animal instanceof Animal; // true
if (animal instanceof Cat) { // false이므로 실행되지 않는다.
C04Cat cat = (C04Cat) animal;
cat.meow();
}
// 자바 12부터 가능
if (animal instanceof Cat cat) { // 위의 조건문을 줄여서 쓸 수 있다.
cat.meow();
}
System.out.println("프로그램 종료");
}
}
class Animal {}
class Tiger extends Animal {}
class Cat extends Animal {
public void meow() {
System.out.println("야옹");
}
}
참조변수 animal은 Tiger 객체를 참조하고 있고, Cat은 참조하고 있지 않다.
그러므로 Cat으로 형변환을 할 수 없다.
이를 알아보기 위해 위의 코드처럼 instanceof 연산자를 이용했고,
boolean b1 = animal instance of Cat 결과 false인 것을 알 수 있다.
강제형변환이 안되는 상태인데 실행하면 프로그램 종료가 일어나기 때문에 instanceof 연산자로 객체 타입을 확인하고 강제형변환을 시켜야 한다.
String s = "java";
Object o = s;
System.out.println(s instanceof String);
System.out.println(s instanceof Object); //String의 부모클래스
System.out.println(s instanceof Serializable); //String의 인터페이스
CharSequence charSequence = s;
System.out.println(charSequence instanceof CharSequence); //true
System.out.println(charSequence instanceof String); //true
위의 코드에서 instanceof 연산자가 쓰인 코드가 모두 true인 이유는
s, charSequence 모두 실제 인스턴스가 String이기 때문이다.
'개발자 준비과정 > JAVA' 카테고리의 다른 글
[JAVA] 람다식 (0) | 2024.03.13 |
---|---|
[JAVA] 중첩 클래스, 익명 클래스 (0) | 2024.03.12 |
[JAVA] 객체 배열... (3) | 2024.03.07 |
[JAVA] Class String, Arrays 주요 메소드 (1) | 2024.03.06 |
[JAVA] Call By Value (0) | 2024.03.04 |