개발 지식/Java

[Java] 형 변환

devGSP 2022. 7. 13. 08:00
반응형
이 게시물은 아래 버전을 기준으로 작성되었습니다.

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;	// 에러. 실수는 정수로 자동 형 변환이 불가능하다.
	}
}

 

conversion1
Conversion.java 실행 결과1

 

 

이번엔 하단의 int iPi = 3.14; 코드에 있는 주석을 해제한 뒤 실행시켜 보자. 그러면 아래와 같은 오류 메시지가 출력된다.

 

 

conversion2
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("================================");
	}
}

 

conversion3
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 + yearstrYear + 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));
	}
}

 

conversion4
MyConversion.java 실행 결과

 

 

 

반응형

'개발 지식 > Java' 카테고리의 다른 글

[Java] If 분기문  (0) 2022.07.15
[Java] 연산자  (0) 2022.07.14
[Java] 명명 규칙  (0) 2022.07.12
[Java] 변수(4) - 상수  (0) 2022.07.11
[Java] 변수(3) - 참조형 변수와 String  (0) 2022.07.10