Java : 11.0.15.1 OS : Windows 10 Pro IDE : Eclipse IDE for Enterprise Java and Web Developers - 2022-06
형 변환
형 변환
형 변환(Conversion)이란 변수 등이 가지는 자료형을 다른 자료형으로 변환하는 것을 말한다. 모든 상황에서 가능한 것은 아니며, 상황에 따라 형 변환이 불가능할 수도 있다.
명명 규칙의 방법과 명칭
1. 자동 형 변환
자동 형 변환(Implicit Conversion)이란 특별한 명령 없이 형 변환이 이루어져 사용되는 경우를 말한다. 보통은 작은 자료형이 큰 자료형으로 저장되고, 정수는 실수형 변수에 저장된다. 예를 들면 아래와 같다.
package com.devgsp.study.basic;
public class Conversion {
public static void main(String[] args) {
// int와 char 사이의 자동 형 변환
int ucodeA = 'A';
int ucodeB = 'B';
int ucodeC = 'C';
System.out.println("ucodeA : " + ucodeA + ", ucodeB : " + ucodeB + ", ucodeC : " + ucodeC);
char num51 = 51;
char num66 = 66;
char num67 = 67;
System.out.println("num51 : " + num51 + ", num66 : " + num66 + ", num67 : " + num67);
System.out.println("=========================");
// int와 double 사이의 자동 형 변환
double dOneTwoThree = 123; // 정수는 실수로 자동 형 변환이 가능하다.
// int iPi = 3.14; // 에러. 실수는 정수로 자동 형 변환이 불가능하다.
}
}
Conversion.java 실행 결과1
이번엔 하단의 int iPi = 3.14; 코드에 있는 주석을 해제한 뒤 실행시켜 보자. 그러면 아래와 같은 오류 메시지가 출력된다.
Conversion.java 실행 결과2
위 코드를 그대로 실행하면 오류 메시지가 출력된다. 오류의 내용을 잘 읽어 보면
cannot convert from double to int
라고 출력되고 있다. 즉, 정수는 실수로 자동 형 변환이 가능하나 실수는 반대로 정수로 자동 형 변환이 불가능하다는 것을 알 수 있다.
2. 명시적 형 변환
명시적 형 변환(Explicit Conversion)이란 자동 형 변환이 되지 않는 상황에서 형 변환이 필요한 경우 명시적으로 변환을 시키는 명령을 말한다.
명시적 형 변환의 문법과 샘플 코드는 아래와 같다.
([변환할 자료형])[변환할 값]
package com.devgsp.study.basic;
public class Conversion2 {
public static void main(String[] args) {
// double을 int로 명시적 형 변환
double dPi = 3.14;
int iPi = (int)3.14;
System.out.println("dPi : " + dPi + ", iPi : " + iPi);
System.out.println("================================");
}
}
Conversion2.java 실행 결과
[예제]
1. com.devgsp.study.basic 패키지에 MyConversion 클래스를 생성하자. 2. int형 변수 year를 선언하고, 동시에 2022로 초기화하자. 3. 당신은 year를 문자열로 형 변환한 변수 strYear를 사용하고 싶다. 그러나 int형 변수는
String strYear = (String)year; // Cannot cast from int to String 에러 발생
와 같은 형태를 사용해서는 문자열로 형 변환을 할 수가 없다. 방법이 없을까?
4. 힌트가 필요하다면 링크를 눌러 예제를 다시 한번 살펴보자. 5. 방법을 깨달았다면 year + year와 strYear + strYear를 출력하는 코드를 작성해 보자.
package com.devgsp.study.basic;
public class MyConversion {
public static void main(String[] args) {
int year = 2022;
//String strYear = (String)year; // Cannot cast from int to String 에러 발생
String strYear = year + "";
// 빈 문자열을 더해 String형으로 형 변환을 하는 것은 일종의 꼼수다.
// 추후 생성자, 메서드, 클래스 등에 대해서 자세히 배우게 되면 다른 방법을 통해 형 변환하는 방법을 배울 수 있다.
System.out.println("year + year : " + (year + year));
System.out.println("strYear + strYear : " + (strYear + strYear));
}
}