Casting

형변환 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

Primitive 타입

  • 묵시적 형 변환
    • 작은 데이터 타입에서 큰 데이터 타입으로 형 변환
    • 값에 대한 손실이 발생할 가능성이 없음
    • 따로 연산자가 필요없다.(JVM이 서비스 해줌)
  • 명시적 형 변환
    • 큰 데이터 타입에서 작은 데이터 타입으로 형 변환
    • 값에 대한 손실이 발생할 가능성이 있음
    • 명시적으로 형변환 연산자를 써줘야 한다.

byte → short → int → long → float → double

             char

Reference 타입

  • 사용할 수 있는 멤버의 갯수를 조절하는 것
    • 값이 달라지는 것이 아님
  • 조상 , 자손 관계의 참조변수는 서로 형 변환 가능

업캐스팅(UpCasting)

  • 업캐스팅은 자식 클래스가 부모 클래스 타입으로 캐스팅 되는 것이다.
  • 업캐스팅은 캐스팅 연산자 괄호를 생략할 수 있다
  • 단, 부모 클래스로 캐스팅 된다는 것은 멤버의 갯수 감소를 의미한다.이는 곧 자식 클래스에서만 있는 속성과 메서드는 실행하지 못한다는 뜻이다.
  • 업캐스팅을 하고 메소드를 실행할때, 만일 자식 클래스에서 오버라이딩한 메서드가 있을 경우, 부모 클래스의 메서드가 아닌 오버라이딩 된 메서드가 실행되게 된다.

다운 캐스팅(DownCasting)

  • 다운캐스팅은 거꾸로 부모 클래스가 자식 클래스 타입으로 캐스팅 되는 것이다.
  • 다운캐스팅은 캐스팅 연산자 괄호를 생략할 수 없다
  • 다운캐스팅의 목적은 업캐스팅한 객체를 다시 자식 클래스 타입의 객체로 되돌리는데 목적을 둔다. (복구)

instanceof 연산자

  • 참조 캐스팅을 잘못했다가 런타임 환경에서 에러가 나 프로그램이 종료 되버리면 서비스에 크나큰 차질이 생기게 된다.
  • 따라서 코드 디버깅을 많이 하여 미리 예방하는 것이 베스트이지만, 이마저도 부족하면 직접 업캐스팅 / 다운캐스팅 유무를 확인하여 참조 캐스팅 동작을 결정하면 된다.
  • 이때 사용되는 것이 instanceof 연산자인데, 이 연산자는 어느 객체 변수가 어느 클래스 타입인지 판별해 true/false를 반환해준다.

'Computer science > JAVA' 카테고리의 다른 글

Instrinsic Lock  (0) 2023.01.08
Thread  (1) 2023.01.02
Object Class  (0) 2023.01.01
String Class  (0) 2023.01.01
Serialization(직렬화)  (0) 2022.12.25

+ Recent posts