Development/JavaEssential

java - 연산자 2

linuxism 2012. 10. 7. 11:30


연산자란 변수에 값을 대입하거나 변수의 값을 변경하는데 사용하는 표현식을 말한다.

연산자에는 산술연산자, 증감연산자, 대인연산자, 연산 후 대입 연산자 , 관계연산자, 논리연산자, 비트연산자, 삼항연산자 등이 존재 한다.

  1. 산술연산자 : 수학적 연산과 관련한 연산자를 말하며 산칙연산자라고도 한다.

    산술연산자의 종류에는 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%) 등의 연산자가 있다.

    산술연산자의 우선 순위는 기본적인 사칙연산의 우선순위와 동일하다.

  2. 증감연산자 : 사용 변수의 앞이나 뒤에 붙어서, 변수의 값을 1 증가시키거나 감소시킬 때 사용한다.

          주로 제어문중 for / while 등의 반복문에서 많이 사용된다.

    증감 연산자의 종류로는 ++ 와 -- 가 있다.

    증감 연산자 사용 시, 변수의 앞 부분에 증감 연산자가 붙은 경우 해당 변수를 실행하기 전에 1 증가하거나 감소한 후 실행하게되며, 증감 연산자가 변수의 뒷부분에 붙은 경우에는 변수를 수행한 후 1 증가하거나 감소 시킨다.

    작성 예제)

    int x = 1;                     int x = 1;

    int y = ++x;                   int y = x++;

    결과 값 : x = 1 / y = 2         결과값 : x = 2 / y = 1

  3. 대입연산자 : 연산후 값을 변수에 대입하는 연산자이다.

          대입 연산자로는 '='를 사용한다.

    기호와 역할 : 기호는 "=", '변수1=변수or상수' 연산자 왼쪽에 할당된 변수나 상수, 혹은 연산 결과의 값을 오른쪽 변수에 대입하는 동작을 한다.
    작성 예제)

    a = 4; //대입 연산자 사용시 a변수에 4라는 값이 대입 된다.
    주의점 : = 연산자의 오른쪽에 일반적으로 상수 값을 적용하지 않는다.

  4. 연산후 대입연산자 : 연산자와 대입 연산자를 결합하여 사용한다.

    연산 후 대입 연산자의 경우 산술 연산자 및 비트연산자와 대입 연산자를 합쳐서 사용한다.

    작성 예제)

    int x = 1;

    int y = 0;

    y += x;      (y = y + x; 의 의미)

  5. 관계연산자 : 두 피연산자 사이의 값을 크기 또는 관계를 비교하는 연산자로서 true, false 로 구분한다.

    관계 연산자의 종류는 다음과 같다.

     

    연산자

    연산식

    설명

    A > B

    A B보다 크면 참

    >=

    A >= B

    A B보다 크거나 같으면 참

    A < B

    A B보다 작으면 참

    <=

    A <= B

    A B보다 작거나 같으면 참

    ==

    A == B

    A B가 같으면 참

    !=

    A != B

    A B가 다르면 참

    instance of

    A instance of B

    A B의 인스턴스이면 참

  6. 논리연산자 : 두개의 논리값을 평가하여 true, false 의 논리형 결과를 반환하는 연산자를 말한다.

     

    연산자

    연산식

    설명

    !

    !A

    A가 거짓(false)이면 참(true)

    &&

    A&&B

    A B가 모두 참이면 참
    A
    이 거짓이면 B를 평가하지 않음

    ||

    A|| B

    A이나 B 둘 중 하나라도 참이면 참
    A
    이 참이면 B를 평가하지 않음

    &

    A & B

    A B가 모두 참이면 참
    A
    이 거짓이어도 B를 평가함

    |

    A | B

    A이나 B 둘 중 하나라도 참이면 참
    A
    이 참이어도 B를 평가함

     

    C/C++ 언어에서와 마찬가지로 자바에서는 논리 연산자 ‘&&’ 또는 ‘||’를 사용하여 논리 연산을 수행할 때, ‘short circuit’ 법칙을 적용한다. 이는 ‘&&’ 연산에서는 피연산자 중 하나라도 거짓이면 전체 논리식은 거짓이 되고, ‘||’ 연산에서는 피연산자 중 하나라도 참이면 전체 논리식은 참이 된다는 특성을 이용하는 것이니다.

    자바 언어에서 논리식은 왼쪽에서 오른쪽으로 평가되는데, ‘&&’ 연산의 경우 왼쪽에서부터 평가해 갈 때, 하나의 피연산자라도 거짓이면, 나머지 피연산자를 평가할 필요도 없이 전체 논리식은 거짓이 되므로 더 이상 논리식을 평가하지 않게 된다.

    또한, ‘||’ 연산의 경우 왼쪽에서부터 평가해 갈 때, 하나의 피연산자라도 참이 나오면, 나머지 피연산자를 평가할 필요도 없이 전체 논리식은 참이 되므로 더 이상 논리식을 평가하지 않는다. 이를 ‘short circuit’ 이라 합니다.

    이러한 ‘short circuit’ 법칙은 프로그램 개발자에게 혼동을 줄 수 있고, 착각을 일으킬 수 있는데, 자바에서는 개발자의 실수를 줄이기 위해, ‘short circuit’ 법칙을 적용하지 않는 ‘&’와 ‘|’ 연산자를 제공해 주고 있다.

  7. 비트연산자 : 데이터를 비트 단위로 처리할 수 있는 연산자를 말한다.( 정수형 자료에서만 사용 )

    • 정수형 데이터 표현방식(bit 연산을 하는데 있어서)
          - 정수형 데이터가 자바에서 2진수로 2의 보수로 표현한다.
          - 양수 : 일반적인 2진수 정수형으로 표현
          - 음수
                 ① 1의 보수를 한다. (양수 데이터 비트 반전)
                 ② 2의 보수를 한다. (1의 보수 후 1을 더한다.)
                 ex) 1을 음수로 만들기 :1(0000 0001) → ①번 적용(1111 1110) → ②번적용(1111 1111) 결과: -1
                       중요 : 왼쪽 비트가 1이면 음수, 0이면 양수
    • 비트논리(Bitwise) 연산 : 변수의 각 비트 값에 논리곱(AND), 논리합(OR), XOR 연산을 한다.
         ① AND(논리곱) : 연산대상1 & 연산대상2 = 연산대상1 x 연산대상2
            작성예제)
            byte bi = 0x11; //0001 0001
            byte bi2= 0x22; //0010 0010
            int a= bi&bi2 //0000 0000
            답 : 0 (10진수)   
         ② OR연산(논리합) : 연산에 사용되는 비트의 값이 하나라도 1인 경우 결과값이 1이다.
            작성예제)
            byte bi = 0x11; // 0001 0001
            byte bi2= 0x22; // 0010 0010
            int a=bi|bi2 // 0011 0011(bi와 bi2의 OR연산, '|'는 가격표시 쉬프트 키)
            결과 : 51 (10진수)
         ③ XOR연산 : 연산에 사용되는 비트의 값이 두 값이 다른 경우에는 1, 같은 경우에는 0이 결과 값이 되는 연산 연산대상1 
                            연산대상2 결과값 
            작성예제)
            byte bi = 0x31; //0011 0001
            byte bi2= 0x22; //0010 0010
            int c=bi^bi2 //0001 0011
            결과 : 19 (10진수)
    • 비트 이동 연산자(Shift 연산)
      - 주의점 : 비트 연산중의 하나로서 정수형 데이터만이 이 연산자를 사용할 수 있다. 시프트연산자라고도 함.
      - 연산자 기능 
            ' <<  ' 왼쪽으로 정해진 숫자만큼 비트이동, 0을 나머지 비트에 채움 
            ' >>  ' 오른쪽으로 정해진 숫자만큼 비트이동, 부호와 같은 비트 채워 넣음, 양수는 0 음수는 1 
            ' >>> ' 오른쪽으로 정해진 숫자만큼 비트이동, 부호 비트와 상관없이 0을 채움

  8. 삼항연산자 : 조건 연산자라고도 한다. 조건문을 대신해서 사용된다. 대부분 대입 연산자와 같이 사용되는 경우가 많다.

    사용법 : 변수 = (조건) ? 값1 : 값2
    조건이 참이면 값1이 변수에 대입, 거짓이면 값2가 변수에 대입.


연산자의 우선 순위는 다음과 같다. 연산자의 수행 시 여러 연산자가 혼용된 경우 연산자의 우선순위에 따라 수행하도록 한다.

1

 ( ), [ ]

2

 ++, --, ~, (+), (-)

3

 *, / ,%

4

 +, -

5

 >>, <<, >>>

6

 <, <=, >=, >

7

 ==, !=

8

 &

9

 ^

10

 |

11

 &&

12

 ||

13

 expr?op1:op2

14

 =, +=,-=, *=, /=, %=



출처 - http://jmonster.springnote.com/pages/902844