본문 바로가기

항해

JAVA_형변환(casting) 정리!

 자바에서 형변환은 데이터타입을 다른 데이터타입으로 변환하는 과정!!

      ▸ 기본 데이터 타입(primitive data type)
      ▸ 참조 데이터 타입(reference data type)

✔️ 기본 데이터 타입의 형변환

기본 데이터 타입은 서로 다른 데이터 타입 간 형변환 가능

 데이터 타입의 크기와 범위에 따라 자동 혹은 강제로 이루어진다.

 

  • 자동 형변환(묵시적 형변환) :
    - 데이터 손실 없이 더 작은 데이터 타입에서 큰 데이터 타입으로 변환할 때 발생


    - 자동 형변환 규칙 : 
    ▹ 'byte' 'short' 'int' 'long' 'float' 'double'
    'char'은 'int'로 변환

    ex.
int numInt = 5;
double numDouble = numInt; // int -> double 자동 형변환



  • 강제 형변환(명시적 형변환) :
    - 더 큰 크기의 데이터타입에서 작은 크기의 데이터 타입으로 변환될 때 발생
    - 데이터 손실이 발생할 수 있으므로 주의가 필요
    '(타입)' 을 사용
    ▹ex.
double numDouble = 3.14;
int numInt = (int) numDouble; // double -> int 강제 형변환, 값이 손실될 수 있음

 

✔️ 참조 데이터 타입의 형변환

클래스와 인터페이스 등의 객체 참조를 다루는 데이터 타입

→ 형변환이 클래스의 상속 관계나 인터페이스의 구현 관계에 따라 이루어진다.

  • 업캐스팅(묵시적 형변환):
    - 부모클래스 타입으로 자식 클래스 객체를 참조할 수 있다.(자동)
    ▹ex.
class Animal { }
class Dog extends Animal { }

Animal animal = new Dog(); // 업캐스팅 발생

  • 다운캐스팅(명시적 형변환):
    - 업캐스팅된 객체를 다시 원래의 자식클래스 타입으로 변환할 때 강제 형변환을 해야한다.
    ▹ '(타입)' 을 사용
    런타임 시 타입 체크를 하기 때문에 올바른 타입이 아니라면 'ClassCastException'이 발생할 수 있다.
    참조 데이터 타입 간에는 상속 관계나 인터페이스 구현 관계가 없는 경우에는 컴파일 오류 발생.
    ex.
Animal animal = new Dog();
Dog dog = (Dog) animal; // 다운캐스팅 발생

 

✔️ String / int 간의 형변환

String 과 int 는 서로 다른 데이터 타입이므로 직접적인 자동 형변환이나 강제 형변환은 불가!

BUT) String → int / int String 으로 변환하는 방법은 제공된다.

  • 'String' 을 'int' 로 변환 :
     'Integer.parseInt()' 메서드를 사용
    변환할 'String' 값은 정수형 숫자 형식이어야 함
    → 그렇지 않으면 'NumberFormationException' 이 발생할 수 있음!

    ex.
String strNumber = "123";
int number = Integer.parseInt(strNumber); // "123"을 123으로 변환

 

  • 'int' 를 'String' 으로 변환 : 
    - 문자열을 숫자로 변환 : Parsing 또는 문자열 파싱
    - 숫자를 문자열로 변환 : Stringify 또는 숫자를 문자열로 변
    'String.valueOf()' 메서드나 'Integer.toString()' 메서드를 사용하여 'int' 값을 'String' 으로 변환할 수 있다.
     ex.
int number = 123;
String strNumber = String.valueOf(number); // 123을 "123"으로 변환

 

  •