IT수업/JAVA PART1

IT 수업 10주차 (5) 형변환

워제하 2024. 2. 28. 12:37

 

● (자료) 형변환

연산시 일치하지 않는 자료형을 일치시키는 작업

데이터 손실을 최소화하기 위해서 형변환 함.

- 자동형변환(암시적 형변환) : 컴파일러에 의해 자동 형변환
- 강제형변환(명시적 형변환) : 프로그래머에 의해 강제 형변환

자동형변환(=)
- 범위가 넓은 공간에 작은값이 대입되는 경우
- byte > short,char > int > long > float > double

 

 

 

 

< 실행화면 >

 

 

 

● 강제 형변환
- 좁은범위공간에 큰값을 넣으려고 하는경우
- 기본적으로 불가능하기 때문에 강제로 자료형을 바꾸어 전달한다
- 데이터 손실의 염려가 있다

 

 

< 실행화면 >

 

 

 

 

 

 

< 실행화면 >

 

 

 

 

● 연산식

- 서로 다른 타입의 피연산자가 있을 경우 두 연산자 중 크기가 큰 타입으로 자동변환된 후 연산을 수행한다.

- byte, char, short는 int 타입으로 변환된 후 연사이 수행되며, 연산의 결과도 int 타입이 된다.

- char 타입의 연산 결과는 int 타입으로 산출

- 부호 연산자(+, - )의 산출 타입은 int 

- 비트 반전 연산자 산출 타입은 int , 비트 반전 연산자는 정수타입 (byte, short, int, long)의 피연산자에만 사용된다.

- 비트 반전 연산자의 산출값이 1을 더하면 부호가 반대인 정수를 얻을 수 있다.

 

 

 

● 산술연산자 규칙

 

- 피연산자들이 모두 정수타입이고, int 타입(4byte)보다 크기가 작은 타입일 경우 모두 int 타입으로 변환 후 연산을 수행하며, 산출 타입은 int가 된다.
- 피연산자들이 모두 정수타입이고, long 타입이 있을 경우 모두 long 타입으로 변환 후, 연산을 수행하며, 산출 타입은 long이 된다.
- 피연산자 중 실수타입(float, double)이 있을 경우, 크기가 큰 실수 타입으로 변환 후 연산을 수행하며, 연산의 산출 타입은 실수 타입이 된다.
ex) int + double -> double + double = double
- 즉 연산의 결과를 실수로 얻고 싶다면 피연산자 중 최소한 하나는 실수 타입이어야 한다.

 

 

 

● 정수 연산식(int 보다 작은 변수자료형(short, char , byte))

- int 로 자동 형변환 
byte x = 10;
byte y = 20;
byte result1 =(byte)(x + y);   : 컴파일 에러 x,y는 각각 int형 자료료 담아서 처리가 되고 왼쪽 byte형으로 저장시 작은공간에 큰자료형타입넣으려는 문제 발생한다.

 

 


● 정수 연산식(int 보다 큰 변수자료형(long))

- 큰 타입으로 자동 형 변환

int result =(int)(var1 + var2 + var3); : 오른쪽 변수들은 long 으로 자동형변환 됨 but 왼쪽 공간이 작은공간이기 때문에 컴파일 에러가 난다.

 

 

 


● 실수연산식 

- 큰 타입으로 자동 형 변환

int result3 = (int)(intvar + flvar+ dbvar); : intvar , flvar 가  각각 double 형으로 형변환된값이 더해져서 result 3에 저장된다.

 

 

 

 

● 나눗셈 연산

System.out.println(10/4); 는 '10'때문에 소수점이하가 버려져 데이터 손실이나 '2.5'가 아닌 '2'라는 int형으로 값이 나온다.

그러므로 소숫점 '2.5'가 나오게 하려면 System.out.println(10.0/4); 하면 된다.

 

 

< 실행화면 >

 

 

 

 

● short vs char

- char 와 short는 같은 size(2byte)를 가지나 short는 양,음수를 지원 / char는 양수만 지원한다.
- short, char간의 데이터교환시 동일한 값을 저장하더라도 표현하는 범위가 다르기 때문에 각각 다른값이 나올수도 있다.

 

 

 

< 실행화면 >

 

 

 

 

 

 

 

● 문자열 + 문자열

- 문자열 + 문자열
- 문자열 + 문자 + 문자열
- 문자열 + 숫자 -> 숫자를 문자열로 해석! 단순연결

 

< 실행화면 >

 

 

','은 숫자로 인식이 가능하므로 System.out.println(','+1+"하이"); 하면 (결과)45하이 로 나온다.

 

 

 

 

● 문자열 -> 숫자형 변환

 

- Byte.parseByte() 

- Interger.parseInt()

- Float .parseFloat()

- Double.parseDouble()

 

 

- 정수

 

< 실행화면 >

 

 

- 실수

 

< 실행화면 >

 

 

 

 

● 숫자형 -> 문자형 변환 

 

< 실행화면 >

 

 

 

 

 

 

 

 

 

 

< 정리 >

 

 

 

 

< 연습문제 >

 

 

 

 

 

 

< 답 >

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 : https://mchch.tistory.com/129