Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

한바다

[JAVA]형 변환 본문

카테고리 없음

[JAVA]형 변환

한바다진화 2024. 5. 1. 20:54

1.형 변환이란?

정수와 실수는 컴퓨터 내부에서 표현되는 방식이 전혀 다르다. 따라서 정수와 실수를 더한다고 할때 그대로 연산을

수행할 수 없고 하나의 자료형으로 통일한 후 연산을 해야 하므로 형변환(type conversion)이 이루어진다

[예시]

int m = 25; //int형 변수 m에 정수값 25을 대입

double m2 = n; //int형 변수 m의 값을 double형 변수 m2에 대입

위와 같이 각 변수의 자료형이 다를 때 자료형을 같게 바꾸는 것임.

 

형변환은 크게 자동형변환과 강제적형변환이 있다.형변환의 기본 원칙은 아래와 같다.

1. 바이트 크기가 작은 자료형에서 큰 자료형으로 형변환은 자동으로 이루어진다.
2.덜 정밀한 자료형에서 더 정밀한 자료형으로 형변환은 자동으로 이루어진다.

 

정수 실수
byte(1바이트) short(2바이트) int(4바이트) long(8바이트) float(4바이트) double(8바이트)
  char(2바이트)        

 

위 표에서 왼쪽에서 오른쪽으로 형변환을 하려면 강제로 변환해야 한다.

long형이 8바이트이고 float형이 4바이트인데 자동형변환이 되는 이유는 실수가 정수보다 표현범위가 더 넓고 

정밀하기 때문이다. 또한 오른쪽에서 왼쪽으로 형 변환이 이루어질 때는 자료손실이 없지만 그 반대인 경우에는

자료 손실이 발생 할 수 있다.

 

2.자동형변환

① 바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우

[예시]byte num = 30;int num2 = num; //byte형 변수 num 값을 int형 변수 num2에 대입함→ 이 경우 num의 크기는 1바이트이고 num2의 크기는 4바이트이므로 자료손실 없이 num에 들어 있는 값이 모두 num2에저장되며 남은 3바이트는 0으로 채워진다.

② 덜 정밀한 자료형에서 더 정밀한 자료형으로 대입하는 경우

[예시]int numA = 42;float numB = numA;

이 경우에는 두 변수의 크기가 같은 4바이트라도 float형인 numB가 더 정밀하게 데이터를 표현할 수 있으므로

실수형인 float형으로 변환된다.

 

3.강제형변환

①  바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우

[예시]

int cNum = 18;byte dNum = (byte)cNum; //강제로 형을 바꾸려면 바꿀 형을 괄호를 써서 명시해야 함

② 더 정밀한 자료형에서 덜 정밀한 자료형으로 대입하는 경우

실수 자료형에서 정수 자료형으로 값이 대입되는 경우에도 형변환을 강제적으로 해주어야 함

[예시]

double dNum = 6.45;

int gNUm = (int)dNum; //실수 자료형 double을 정수 자료형 int로 형변환

 

4.메서드 호출을 통한 형변환

→ 숫자자료형

객체자료형.parse자료형(변환할값)

Integer.parseInt(변환할 String 변수);Double.pareseDouble(변환할 String 변수); Byte.pareseByte(변환할 String 변수); Float.pareFloat(변환할 String 변수); Long.pareLong(변환할 String 변수); [예시]String str1 = "456";int num1 = Integer.parseInt(str1)

 

String str2 = "123.45;double num2 = Double.parseDouble(str2)

 

숫자 자료형    String

객체자료형.toString(변환할 숫자 변수);

Integer.toString(변환할 숫자 변수);

Byte.toString(변환할 숫자 변수);

Short.toString(변환할 숫자 변수);

Double.toString(변환할 실수 변수);

Float.toString(변환할 실수 변수);

Long.toString(변환할 숫자 변수);

[예시]

int number = 0108679;

String sti = Integer.toStirng(number);

 

double score = 99.5;

String ste = Double.toString(score);