본문 바로가기
[ Developer ]/Core Java

[Java] 자바 연산자

by 김현섭. 2016. 9. 6.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
자바 연산자 (Operator)

1 이항 연산자
우리가 배울 이항 연산자(binary operator)란 말 그대로 두개의 피연산자와 한개의 연산자를 가지는 연산을 말합니다. 


*이항 연산자의 종류


여기서 '우선순위'란 연산식 내에 여러가지 연산자가 사용됬을 경우 무엇을 먼저 처리할것인지, 무엇을 나중에 처리할 것인지에 대한 기준입니다. 예를 들어, 다음의 식의 결과를 유추해봅시다.


1
124 + 62 * 43 - 22
cs


예상하시듯 답은 2768 입니다. 그 이유는 곱셈이 덧셈, 뺄셈 보다 우선순위가 높기 때문입니다.
그래서, 62 * 43을 우선 계산한 뒤 124를 더하고 22를 뺀 결과가 나온 것입니다.
 연산방향이란,
우선순위가 같은 연산자가 있을때 연산을 수행하는 방향을 말하는 것입니다. 아까의 식에서, 62 * 43이 계산된 후에, 124 + 2666 - 12란 식이 만들어지는데, 산술 연산자의 연산방향은 왼쪽에서 오른쪽으로 이동하므로, 왼쪽에 있는 연산자가 먼저 계산되는걸 의미합니다.


2 대입 연산자, 산술 연산자



*대입 연산자와 산술 연산자를 활용한 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class AsarOperator {
 
    public static void main(String[] args) {
        
        int num1;
        int num2;
 
        num1 = 714;
        num2 = 500;
 
        System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
        System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
        System.out.println(num1 + " * " + num2 + " = " + num1 * num2);
        System.out.println(num1 + " / " + num2 + " = " + num1 / num2);
        System.out.println(num1 + " % " + num2 + " = " + num1 % num2);
    }
}
cs




위와 같은 결과를 갖게 됩니다
10진수 정수형 변수 num1, num2를 컴파일러에게 선언하고 7행과 8행에 714와 500이란 값을 각각의 변수에 대입 연산자를 통해 대입했습니다.
 
그리고 10~14행에서 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 구하는 연산자를 사용해 그 결과를 출력하도록 했습니다.



3 복합 대입 연산자

복합 대입 연산자란 대입 연산자와 다른 연산자들과 묶여서 쓰이는 형태의 연산자를 말하는 것입니다. 다음의 표를 보시면 쉽게 이해하실 수 있습니다.




여기서 굳이 산술 연산자가 아니더라도, 산술 연산자를 제외한 다른 연산자와 대입 연산자를 묶을 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CompoundOperator {
    
    public static void main(String[] args) {
        
        int num1 = 5;
        int num2 = 4;
 
        num1 += num2; // num1 = num1 + num2
        System.out.println("num1의 값: " + num1);
 
        num2 *= num1; // num2 = num2 * num1
        System.out.println("num2의 값: " + num2);
    }
}
cs




코드로 돌아가서, 5~6행에서 10진수 정수형 변수 num1, num2를 선언하여 5와 4라는 값을 각각 대입했습니다. 그런 뒤에 8행과 11행을 보시면 복합 대입 연산자가 쓰였는데, 이것은 num1 = num1 + num2, num2 = num2 * num1 으로 해석이 됩니다. 정리하면 num1 = 5 + 4;가 되어 9가 num1에 대입되었고, num2 = 4 * 9; 가 되어 36이란 값이 num2에 대입된 것입니다.



4 관계 연산자

관계 연산자란 수식의 결과가 참이면 true를, 거짓이면 false를 반환하는 연산자입니다.




관계 연산자 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class RelationOperator {
    
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
 
        System.out.println(num1 + " > " + num2 + " = " + (num1 > num2));
        System.out.println(num1 + " < " + num2 + " = " + (num1 < num2));
        System.out.println(num1 + " >= " + num2 + " = " + (num1 >= num2));
        System.out.println(num1 + " <= " + num2 + " = " + (num1 <= num2));
        System.out.println(num1 + " == " + num2 + " = " + (num1 == num2));
        System.out.println(num1 + " != " + num2 + " = " + (num1 != num2));
    }
}
cs




결과를 살펴보면, 10 > 20에서 당연히 10은 20보다 작으므로 거짓(false)를 반환합니다. 10 < 20은 맞는 수식이므로 참(true)을 반환합니다. 10 >= 20은 거짓(false), 10 <= 20은 참(true), 그리고 10과 20은 같지 않으므로 거짓(false), 10과 20은 서로 다르므로 참(true)을 반환합니다.


5 논리 연산자
논리 연산자는 관계 연산자와 같이 true, false를 반환하는 연산자입니다. 논리 연산자의 종류엔 논리곱(AND, &&), 논리합(OR, ||), 논리부정(NOT, !)가 있습니다.




이 논리 연산자의 연산결과를 모아둔 표를 진리표(Truth table)이라고 합니다.



여기서 T란 참(True)를, F란 거짓(False)를 나타냅니다. A, B는 들어가는 값(Input)을 의미하고 Z는 나가는 값(Output)을 의미합니다.

AND 연산의 경우 1번과 같이 A와 B가 둘다 참일 경우엔 결과값도 참이지만 2, 3, 4번과 같이 둘다 참이 아닐 경우에는 거짓이 출력됩니다.
OR 연산의 경우 1, 2, 3번과 같이 A나 B중 하나라도 참일 경우에 결과값이 참이됩니다. 4번 같은 경우는 A와 B가 모두 거짓이기에 결과값은 거짓이 됩니다.

NOT 연산은 말그대로 논리 부정이므로 A가 True일때 NOT 연산을 사용하면 A가 False로 바뀌고, B가 False일때 NOT 연산을 사용하면 A가 True로 바뀝니다. 표로 정리하면 아래와 같습니다.



논리 연산자 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class LogicalOperator {
 
    public static void main(String[] args) {
        
        int num1 = 10;
        int num2 = 20;
 
        // AND
        System.out.println(num1 < num2 && num1 != num2);
        System.out.println(num1 > num2 && num1 != num2);
 
        // OR
        System.out.println(num1 < num2 || num1 != num2);
        System.out.println(num1 > num2 || num1 != num2);
        System.out.println(num1 > num2 || num1 == num2);
 
        // NOT
        System.out.println(!(num1 < num2));
        System.out.println(!(num1 > num2));
    }
}
cs




위의 결과를 통해 true, false로 결과값이 출력되는 것을 알 수 있고, AND, OR, NOT 연산을 사용하고 결과 옆에 어떻게 해서 true와 false가 나오는지 과정을 달았습니다.



'[ Developer ] > Core Java' 카테고리의 다른 글

[Java] 자바 변수 (Variable)  (0) 2016.11.16
Java 8 인터페이스 vs 추상클래스  (0) 2016.11.08
[Java] 자바 주석처리  (0) 2016.09.05
[Java] 자바 자료형 (Data Type)  (0) 2016.09.02
[Java] 자바 변수 Variable  (0) 2016.08.11