반응형
사칙 연산자
public class PrintfEx2 {
public static void main(String[] args) {
int a = 10;
int b = 4;
System.out.printf("%d + %d = %d%n", a, b, a+b);
System.out.printf("%d - %d = %d%n", a, b, a-b);
System.out.printf("%d * %d = %d%n", a, b, a*b);
System.out.printf("%d / %d = %d%n", a, b, a/b);
System.out.printf("%d / %f = %f%n", a, (float)b, a / (float)b);
// int i를 f float으로 변환하니까 i가 f보다 범위가 작으므로 (float)을 붙여준다. (한 쪽만 변환해도 변환이 된다)
// float을 int로 변환하면 float 단위가 더 크기 때문에, 값 손실이 난다. 그래서 float으로 전환한다.
}
}
산술 변환
"연산 전에 피연산자의 타입을 일치시키는 것" - 타입을 일치시켜야 계산이 가능하다.
ⓐ 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)
ⓑ 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
(byte, short, char)
-> 해당 타입들의 범위가 작기 때문에, 오버플로우가 나서 값 손실이 날 수 있기 때문에, int로 자동 변환된다.
public class PrintfEx3 {
public static void main(String[] args) {
int a = 1_000_000; // 1,000,000 1백만 = 10의 6제곱
int b = 2_000_000; // 2,000,000 2백만 = 10의 6제곱
// 10의 12제곱. int의 범위는 10의 9제곱.
long c = a * b; // a * b = 2,000,000,000,000 ? -> -1454759936
long d = (long)a * b; // 2,000,000,000,000 (long) 형 변환은 한 번만 하면 된다.
System.out.println(c);
System.out.println(d);
}
}
반응형
'java↗' 카테고리의 다른 글
java↗4-6. 비교 연산자 (0) | 2024.03.14 |
---|---|
java↗4-5. 반올림 Math.round(), 나머지 연산자 (0) | 2024.03.14 |
java↗4-3. 형변환 연산자, 자동 형변환 (0) | 2024.03.14 |
java↗4-2. 증감 연산자, 부호 연산자 (0) | 2024.03.14 |
java↗4-1. 연산자의 우선순위 (0) | 2024.03.14 |