728x90
반응형
SMALL

사칙 연산자

덧셈(+) 뺄셈(-) 곱셈() 나눗셈(/)*

class Operator4_1 {
    public static void main(String[] args) {
        int a = 10, b = 4;

        // 덧셈
        System.out.print("a + b = ");
        System.out.println(a + b);

        // 뺄셈
        System.out.print("a - b = ");
        System.out.println(a - b);

        // 곱셈
        System.out.print("a * b = ");
        System.out.println(a * b);

        // 나눗셈
        // 소수점 이하는 버려진다.
        System.out.print("a / b = ");
        System.out.println(a / b);

        // 10 / 4.0f -> 10.0f / 4.0f -> 2.5
        System.out.print("a / (float)b = ");
        System.out.println(a / (float)b);
    }
}

산술변환

연산 전에 피연산자의 타입을 일치시키는 것을 의미한다.

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

long + int -> long + long => long

float + int -> float + float => float

double + float -> double + double => double

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

byte + short -> int + int => int

char + short -> int + int => int

int 보다 작은 타입이 계산을 통해 쉽게 범위가 넘어갈 수 있기 때문에 오버플로우가 발생해 정확한 계산값을 가져오지 못할 수 있어서 미리 큰 범위인 int 타입으로 변환시킨 후 계산하는 것이다.

class Operator4_2 {
    public static void main(String[] args) {
        char ch = '2';

        // 문자 '2' 는 숫자로 50, '0' 은 48
        // 따라서 int 타입으로 자동으로 변하기 때문에 50 - 48 = 2
        System.out.print("ch - '0' = ");
        System.out.println(ch - '0');

        int a = 1_000_000; // 1백만
        int b = 2_000_000; // 2백만

        // a * b = 2_000_000_000_000 -> 10^12
        // long 에 저장하려는 것은 맞지만 a * b 의 결과 타입이 int
        // 따라서 이미 계산을 할 때 오버플로우 발생! -> 따라서 계산을 할 때 형변환 필요!
        // long l = a * b; // -1454759936

        long l = (long)a * b;
        // long * int -> long * long => 1_000_000L * 2_000_000 -> 1_000_000L * 2_000_000L
        System.out.println("l = " + l);
    }
}
728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

비교 연산자와 문자열의 비교  (0) 2023.01.18
Math 클래스와 나머지 연산자  (0) 2023.01.18
형변환 연산자와 자동 형변환  (0) 2023.01.18
증감 연산자와 부호 연산자  (0) 2023.01.18
연산자  (0) 2023.01.18

+ Recent posts