자바에서 형변환은 데이터타입을 다른 데이터타입으로 변환하는 과정!!
▸ 기본 데이터 타입(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 |