3. 항과 연산자

왱구·2023년 12월 11일

JAVA

목록 보기
7/17

1. 항(operand)

: 연산에 사용되는 값



2. 연산자(operator)

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



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

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


4. 연산자의 종류

연산자
대입=
부호+, -
산술+, -, *, /, %
증감++, --
관계<, >, >=, <=, ==, !=
논리&&,
복합+=, -=, 8=, /=, %=, <<=, >>=, >>>=, &=,
조건조건식? 결과1 : 결과2;
비트~, &, |, ^, <<, >>, >>>, <<<

1) 대입 연산자

변수에 값을 대입하는 연산자
연산의 결과를 변수에 대입
우선순위가 가장 낮은 연산자
왼쪽변수에 오른쪽변수(값)을 대입

package assignment;
 public class OperationEx0 {
    public static void main(String[] args) {
        int num1 = 10;    // 같다 =
        int value;
        value = num1 + 10;
        System.out.println(num1);    //10
        System.out.println(value);    //20
    }
}

2) 부호 연산자

단항 연산자
양수/음수의 표현, 값의 부호를 변경

package arithmetic;
public class OperationEx {
    public static void main(String[] args) {
        //부호 연산자
        int num1 = 10;
        int num2 = 20;
        System.out.println(+num1);    //10
        System.out.println(-num2);    //-20
        System.out.println(num2);    //20
        num2 = -num2;
        System.out.println(num2);    //-20
    }
}

3) 산술 연산자

사칙연산에 사용되는 연산자
%는 나머지를 구하는 연산자
=> 숫자n의 나머지는 0~n-1 범위의 수
=> 특정 범위 안의 수를 구할 때 종종 사용

package arithmetic;
public class OperationEx2 {
    public static void main(String[] args) {
        //산술 연산자
        int mathScore = 90;
        int engScore = 70;
        int totalScore = mathScore + engScore;
        System.out.println(totalScore);    //160
//        int avgScore = (mathScore + engScore)/2;
        int avgScore =      totalScore       /2;
        System.out.println(avgScore);    //80
    }
}

4) 증가 감소 연산자

단항 연산자
1만큼 더하거나 1만큼 뺄 때 사용하는 연산자
항의 앞/뒤 위치에 따라 연산의 결과가 달라짐

package arithmetic;
public class OperationEx3 {
    public static void main(String[] args) {
        //증가 감소 연산자
        int gameScore = 150;
        int lastScore1 = ++gameScore;
//        int lastScore1 = gameScore++;
        // gameScore++  => gameScore = gameScore + 1;
        System.out.println(lastScore1);    //151
        System.out.println(gameScore);    //151
        
        int lastScore2 = --gameScore;
        System.out.println(lastScore2);    //150
    }
}

5) 관계 연산자

이항 연산자
연산의 결과가 ture, false로 반환됨

package relational;
public class OperationEx4 {
    public static void main(String[] args) {
        // 관계 연산자
        int num1 = 5;
        int num2 = 3;
        boolean value = (num1 > num2);
        System.out.println(value);            //ture
        System.out.println(num1 < num2);    //false
        System.out.println(num1 >= num2);    //true
        System.out.println(num1 <= num2);    //false 5<=3
        System.out.println(num1 == num2);    //false
        System.out.println(num1 != num2);    //ture
    }
}

6) 논리 연산자

관계 연산자와 혼합하여 많이 사용됨
연산의 결과가 ture, false로 반환됨

package logical;
public class OperationEx5 {
    //논리 연산자
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        boolean flag = (num1 > 0) && (num2 > 0);//true && true
        System.out.println(flag);
        flag = (num1 < 0) && (num2 > 0); //false && true
        System.out.println(flag);
        flag = (num1 > 0) || (num2 > 0); //true || true
        System.out.println(flag); //true
        flag = (num1 < 0) || (num2 > 0); //false || true
        System.out.println(flag); //false
        flag = !(num1 > 0);        //!(true)
        System.out.println(flag); //false
    }
}

6-1) 단락 회로 평가

  • 논리곱&&은 두 항이 모두 ture일 때만 결과가ture
    => 앞의 항이 false이면 뒤 항의 연산을 하지 않고 false
  • 논리합||은 두 항이 모두 false일 때만 결과가 false
    => 앞의 항이 ture이면 뒤 항의 연산을 하지 않고 ture
package logical;
public class OperationEx6 {
    public static void main(String[] args) {
        //단락회로평가실습
        int num1 = 10;
        int i = 2;
        //논리곱 연산 시 앞 항목이 false면 뒤의 항은 연산하지 않음
        boolean value = ((num1 = num1 + 10)<10)&&((i=i+2)<10);
        System.out.println(value);    //false
        System.out.println(num1);    //20
        System.out.println(i);        //2
        value = ((num1 = num1 + 10)>10)||((i=i+2)<10);
        System.out.println(value);    //ture
        System.out.println(num1);    //30
        System.out.println(i);        //2
    }
}

7) 복합 대입 연산자

대입 연산자와 다른 연산자를 조합해 하나의 연산자 처럼 사용함
프로그램에서 자주 사용함

연산자기능
+=두 항의 값을 더해서 왼쪽항에 대입
-=왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입
*=두 항의 값을 곱해서 왼쪽 항에 대입
/=왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입
%=왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입
<<=비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입
>>=비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입
>>>=비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입
&=두 항의 &비트 연산 후 그 값을 왼쪽 항에 대입
|=두 항의 |비트 연산 후 그 값을 왼쪽 항에 대입
^=두 항의 ^비트 연산 후 그 값을 왼쪽 항에 대입

8) 비트 연산자

비트 단위로 연산이 이루어지는 연산자
산술 연산을 비트 이동 연산자를 사용하면 어떤 수의 2배수, 4배수를 만들어 속도를 빠르게 함

profile
늦깎이 애아빠 개발지망생

0개의 댓글