JAVA_형변환(casting) 정리!

2023. 8. 18. 22:03·항해
 자바에서 형변환은 데이터타입을 다른 데이터타입으로 변환하는 과정!!

      ▸ 기본 데이터 타입(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"으로 변환

 

  •  

'항해' 카테고리의 다른 글

모듈화가 필요한 이유  (0) 2023.08.21
WIL : JVM이란 무엇인가?  (0) 2023.08.21
트러블슈팅 Set 자료구조 사용_순서 관련 문제  (0) 2023.08.17
트러블슈팅_reached end of file while parsing  (0) 2023.08.16
무한 루프 트러블 슈팅  (0) 2023.08.14
'항해' 카테고리의 다른 글
  • 모듈화가 필요한 이유
  • WIL : JVM이란 무엇인가?
  • 트러블슈팅 Set 자료구조 사용_순서 관련 문제
  • 트러블슈팅_reached end of file while parsing
yeah구리
yeah구리
백엔드를 공부하는 초심자입니다.
  • yeah구리
    개발일지_헤맨만큼 내땅이다
    yeah구리
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • 스파르타 부트캠프(spring) (75)
      • 스파르타 기술면접 (10)
      • 코딩연습 (0)
      • 항해 (10)
      • 개발일지 (4)
        • 개인 회고 (1)
        • 개발로그 (실무) (2)
      • 공부노트 (0)
      • 코딩테스트 (0)
        • 프로그래머스 (0)
        • 백준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    X(Twitter) API #캐싱 #트러블슈팅 #개발
    비전공개발자 #개발로그 #커리어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
yeah구리
JAVA_형변환(casting) 정리!
상단으로

티스토리툴바