chapter3 7~12 형변환,사칙 연산자&산술변환, 반올림 Math.round()&나머지 연산자
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이나 결과 동일