티스토리 뷰

목차



    반응형
    자바의 여러 가지 연산자

    자바의 여러 가지 연산자

    항과 연산자

     

    항(operand)

    연산의 사용되는 값

     

    연산자(operator)

    항을 이용하여 연산하는 기호

     

    항의 개수에 따른 연산자 구분

    ++num // 항이 한 개인 단항 연산자
    num1 + num2; // 항이 두 개인 이항 연산자
    (5 > 3) ? 1 : 0; // 항이 세 개인 삼항 연산자

    대입 연산자

    변수에 값을 대입하는 연산자

    연산의 결과를 변수에 대입

    우선순위가 가장 낮은 연산자

    왼쪽 변수(lvalue)에 오른쪽 값(rvalue) 대입

    int age = 24; // 나이를 의미하는 age 변수에 24 값을 대입
    totalscore = mathScore + engScore; 
    // mathScore, engScore 두 개의 변수를 더한 값을 totalScore에 대입

    산술 연산자

    사칙 연산에 사용되는 연산자

    5 + 3 // 두 더항을 더합니다.
    5 - 3 // 앞에 있는 항에서 뒤에 있는 항을 뺍니다.
    5 * 3 // 두 항을 곱합니다.
    5 / 3 // 앞에 있는 항에서 뒤에 있는 항을 나눕니다.
    5 % 3 // 앞에 있는 항에서 뒤에 있는 항을 나누어 그 나머지 값을 구합니다.

    증가 감소 연산자

    단항 연산자

    1만큼 더하거나 1만큼 빼는 연산자

    항의 앞/뒤의 위치에 따라 연산의 결과가 달라짐에 유의해야 함.

    val = ++num; // 먼저 num 값이 1 증가한 후 val 변수에 대입
    val = num++; // val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 증가
    val = --num; // 먼저 num 값이 1 감소한 후 val 변수에 대입
    val = num--; // val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 감소

    관계 연산자

    이항 연산자

    연산의 결과가 true(참), false(거짓)으로 반환됨

    num > 3; // 왼쪽 항이 크면 true, 아니면 false 반환
    num < 3; // 왼쪽 항이 작으면 true, 아니면 false 반환
    num >= 3; // 왼쪽 항이 오른쪽 항보다 크거나 같으면 true, 아니면 false 반환
    num <= 3; // 왼쪽 항이 오른쪽 항보다 작거나 같으면 true, 아니면 false 반환
    num == 3; // 두 개의 항의 값이 같으면 true, 아니면 false 반환
    num != 3; // 두 개의 항의 값이 다르면 true, 아니면 false 반환

    논리 연산자

    관계 연산자와 혼합하여 많이 사용됨

    연산의 결과가 true(참), false(거짓)으로 반환됨

    boolean val = (5 > 3) && (5 > 2); // 두 항이 모두 true인 경우에만 결과 값이 true, 그렇지 않은 경우 false
    boolean val = (5 > 3) || (5 < 2); // 두 항 중 하나의 항만 참이면 결과 값은 true, 두 항이 모두 거짓이면 false
    boolean val = !(5 > 3); // 단항 연산자로 결과 값이 true인 경우 false로 false인 경우 true로 결과 값을 바꿉니다.

     

    복합 대입 연산자

    대입 연산자와 다른 연산자를 함께 사용함

    프로그램에서 자주 사용하는 연산자

    num1 += 2; // 두 항의 값을 더해서 왼쪽 항에 대입합니다.
    num1 = num1 + 2; // 위의 복합 대입 연산자와 결과 값이 같음.
    
    num1 -= 2; // 왼쪽 항에서 오른쪽 항의 값을 빼서 왼쪽 항에 대입합니다.
    num1 = num1 - 2; // 위의 복합 대입 연산자와 결과 값이 같음.
    
    num1 *= 2; // 두 항의 값을 곱해서 왼쪽 항에 대입합니다.
    num1 = num1 * 2; // 위의 복합 대입 연산자와 결과 값이 같음.
    
    num1 /= 2; // 왼쪽 항을 오른쪽 항으로 나누어 그 값을 왼쪽 항에 대입합니다.
    num1 = num1 / 2; // 위의 복합 대입 연산자와 결과 값이 같음.
    
    num1 %= 2; // 왼쪽 항을 오른쪽 항으로 나누어 그 나머지 값을 왼쪽 항에 대입합니다.
    num1 = num1 % 2; // 위의 복합 대입 연산자와 결과 값이 같음.

    조건 연산자

    삼항 연산자

    조건 식의 결과가 true인 경우와 false인 경우에 따라 다른 식이나 결과가 수행됨.

    제어문 중 조건문을 간단히 표현할 때 사용할 수 있음.

    int num = (5 > 3) ? 10 : 20; // 조건식이 참이면 10을 거짓이면 20을 반환

    단락 회로 평가 

    논리 곱(&&)은 앞의 항이 false이면 뒤에 항의 결과를 평가하지 않아도 false임

    논리 합(||)은 앞의 항이 true이면 뒤에 항의 결과를 평가하지 않아도 true임

    int num 10;
    int i = 2;
    
    boolean val = ((num1 += 10) < 10) && ((i += 2) < 10); // 논리 곱에서 앞 항의 결과 값이 false이므로 뒤에 문장은 실행되지 않음
    
    System.out.println(val) // false
    System.out.println(num1) // 20
    System.out.println(i) // 2
    
    val = ((num1 += 10) > 10) || ((i += 2) < 10); // 논리 합에서 앞 항의 결과 값이 true이므로 뒤에 문장은 실행되지 않음
    
    System.out.println(val) // true
    System.out.println(num1) // 30
    System.out.println(i) // 2

    비트 연산자

     

    &(AND)연산자

    두 비트가 모두 1인 경우만 1 아니면 0

    int num1 = 5; //  00000101
    imt num2 = 10; // 00001010
    
    int result = num1 & num2; // 00000000
    System.out.println(result); // 0

    |(OR) 연산자

    두 비트가 모두 0인 경우만 0 아니면 1

    int num1 = 5; //   00000101
    imt num2 = 10; //  00001010
    
    int result = num1 | num2; // 00001111
    System.out.println(result); // 15

    ^(XOR) 연산자

    두 비트가 다른 값이면 1, 같은 값이면 0

    int num1 = 5; //   00000101
    imt num2 = 10; //  00001010
    
    int result = num1 ^ num2; // 00001111

    ~(반전) 연산자

    비트 값을 0은 1로 1은 0으로 바꾸는 연산자

    int num = 10; //  00001010
    
    int result = ~num; // 11110101

    <<(왼쪽 shift) 

    비트를 오른쪽에서 왼쪽으로 이동시키는 연산자

    >>(오른쪽 shift) 

    비트를 왼쪽에서 오른쪽으로 이동시키는 연산자

    <<<,>>>

    비트 이동은 동일한데, 남은 공간을 무조건 부호비트가 아닌 0으로 채움

    반응형