자바의 정석 가자!

chapter3 7~12 형변환,사칙 연산자&산술변환, 반올림 Math.round()&나머지 연산자

'쪼리' 2022. 10. 6. 17:48

chapter3 - 7,8 형변환 연산자

형변환 : 변수 또는 상수의 타입을 다른 타입으로 변환하는 것.

 

바꾸는 방법 : (타입) 피연산자

 

ex) 

double d = 85.4;

int score = (int)d;

-> int score = (int)85.4;

-> int score = 85;

* 여기서 변수 d 의 값은 변하지 않는다. 여전히 85.4

 

chapter3 - 8 자동 형변환

* 자동 형변환 : 컴파일러가 자동으로 형변환해줌

원래는 대입연산자의 양쪽타입이 맞아야함.

다만, 생략을 해도 컴파일러가 형변환 해주는 것을 자동 형변환이라고 함.

 

ex)

float f = 1234; //1234는 int타입

float f = (float)1234;

-> float타입이 int타입보다 크기가 큼. 따라서 자동형변환 가능

 

int i = 3.14f; //에러 

int i = (int)3.14f; //OK 결과는 : 3만 변수 i에 담김

-> 큰 값을 작은쪽에 넣으면 값손실 발생 ::: 수동으로 형변환 해줘야함. 

 

작은 값을 큰 그릇에 담음 ::: 자동 형변환.

큰 값을 작은 그릇에 담음 ::: 값손실 발생 ==> 수동 형변환.

 

 

 

chapter3 - 9,10 사칙 연산자, 산술 변환

 

*사칙 연산자 ( + , - , * , / )

이클립스 실행결과

 

* 산술 변환 : 연산 전에 피연산자의 타입을 일치시키는 것.

규칙

1. 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)

ex)

long(8byte) float(4byte) double(8byte) int(4byte) 

 

long + int -> long + long -> 결과 : long

float + int -> float + float -> 결과 : float (실수가 정수보다 범위 넓으니까)

double + float -> double + double -> 결과 : double

 

2. 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.

int(4byte)보다 작은 타입 : byte(1byte), short(2byte), char(2byte)

 

byte + short -> int + int -> 결과 : int

char + short -> int + int -> 결과 : int

 

- 추가

'2' - '0' = 2 

char - char -> int - int -> 결과 : int

문자2는 유니코드표에 따라서 숫자 50으로 바뀜

50 - 48 = 2

 

 

- 실습

 

 

chapter 11

* 반올림 - Math.round()

실수를 소수점 첫 째자리에서 반올림한 정수를 반환.

long result = Math.round(4.52); // result에 5가 저장된다.

 

 

 

* 나머지 연산자 %

피연산자를 나누고 남은 나머지를 반환

ex)

10 / 8 = 1 (몫)

10 % 8 = 2 (나머지)

 

- 나머지 연산자는 피연산자로 정수만 허용 (부호는 무시됨)

=> 10 % 8이나 10 % -8이나 결과 동일