• Q&A
  • 회원가입
  • 로그인

[basic] Java - Operator (연산자)

189  
목차
  1. 연산자 (Java Operators)
  2. 산술연산자 (= 산수연산자 Arithmetic Operators)
  3. 할당연산자 (Assignment Operators)
  4. 비교연산자 (Comparison Operators)
  5. 논리연산자 (Logical Operators)
  6. 비트연산자 (Bitwise Operators)
  7. 연산자 우선순위

 

※ 예제 출력 코드

 

C:\Users\사용자명>java -Dfile.encoding=UTF-8 Hz.java

 

 

연산자 (Java Operators)

1. 연산자 : 변수와 값에 대한 작업 수행.

 

(예) 

public class Hz {

  public static void main(String[] args) {

    int x = 3 + 4; // 7 (숫자 + 슷지)

    int y = x + 5; // 12 (숫자 + 변수)

    int z = x + y; // 19 (변수 + 변수)

  }

}

 


2. 연산자 종류

 

산술 연산자

할당 연산자

비교 연산자

논리 연산자

비트 연산자

 

 

산술연산자 (= 산수연산자 Arithmetic Operators)

 

숫자 연산. (= 산수 계산).

 

[  +  :  덧셈]

[  -  :  뺄셈]

[  *  :  곱셈]

[  /  :  나눗셈]

[  %  : 나머지] ★

[  ++  :  1씩 증가]

[  --  :  1씩 감소]

 


[  +  :  덧셈] 

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x + y); // 8

  }

}

 


[  -  :  뺄셈]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x - y); // 2

  }

}

 


[  *  :  곱셈]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x * y); // 15

  }

}

 


[  /  :  나눗셈]

 

public class Hz {

  public static void main(String[] args) {

    int x = 12;

    int y = 3;

    System.out.println(x / y); // 4

  }

}

 


[  %  : 나머지] ★

※ 나눈 후, 나머지를 반환.

※ 배수 (최소공배수, 최대공약수) 구할 때 사용.

※ x%y == 0  : x는 y의 배수 (예) 18%3 == 0

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x % y); // 2

  }

}

 


[  ++  :  1씩 증가]

 

public class Hz {

  public static void main(String[] args) {

    int x = 3;

    ++x;

    System.out.println(x); // 4

  }

}

 


[  --  :  1씩 감소]

 

public class Hz {

  public static void main(String[] args) {

    int x = 3;

    --x;

    System.out.println(x); // 2

  }

}

 


PS.

출력 구문 안에서 '++, -- 증감연산자가 변수 뒤에 붙은 경우,

출력 구문 실행 후 값이 증감됨.

(예) 

int a = 1;

System.out.println(a++); // 1

System.out.println(a); // 2

 

PS. 정수형과 실수형 숫자 섞어가며 결과값 타입 어떤지 확인 바람.


할당연산자 (Assignment Operators)

 

값을 변수에 할당 (= 배정).

 

[  =  :  할당]

[  +=  :  덧셈 후 할당]

[  -=  :  뺄셈 후 할당]

[  *=  :  곱셈 후 할당]

[  /=  :  나눗셈 후 할당]

[  %=  :  나눗셈 후, 나머지 할당] ★

[  &=  :  AND 비트 연산 후 할당]

[  |=  :  OR 비트 연산 후 할당]

[  ^=  :  XOR 비트 연산 후 할당]

[  >>=  :  Signed right shift 비트 연산 후 할당]

[  <<=  :  Zero fill left shift 비트 연산 후 할당]

[  >>>=  :  Zero-fill right shift (※ 오른쪽 이동)]

 


[  =  :  할당]

 

public class Hz {

  public static void main(String[] args) {

    int x = 3;

    System.out.println(x); // 3

  }

}

 


[  +=  :  덧셈 후 할당]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x += 3; // x = x + 3

    System.out.println(x); // 8

  }

}

 


[  -=  :  뺄셈 후 할당]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x -= 3; // x = x - 3

    System.out.println(x); // 2

  }

}

 


[  *=  :  곱셈 후 할당]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x *= 3; // x = x * 5

    System.out.println(x); // 15

  }

}

 


[  /=  :  나눗셈 후 할당]

 

public class Hz {

  public static void main(String[] args) {

    double x = 5;

    x /= 3; // x = x / 3

    System.out.println(x);

  }

}

 

PS. 변수 x가 int 자료형 경우 결과값 : 1


[  %=  :  나눗셈 후, 나머지 할당] ★

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x %= 3; // x = x % 5

    System.out.println(x); // 2

  }

}



[  &=  :  AND 비트 연산 후 할당]

※ 두 비트 비교해 모두 1이면 각 비트를 1로 설정 후 할당.

※ 5의 이진수 : 00000101

※ 3의 이진수 : 00000011 

※ & 연산 시  :  00000001  (※ 이걸 10진수로 변환 시 1)

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x &= 3; // x = x & 3

    System.out.println(x); // 1

  }

}

 


[  |=  :  OR 비트 연산 후 할당]

※ 두 비트 중 하나가 1이면 각 비트를 1로 설정 후 할당.

※ 5의 이진수 : 00000101

※ 3의 이진수 : 00000011 

※ |= 연산 시 : 00000111  (※ 이걸 10진수로 변환 시 7)

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x |= 3; // x = x | 3

    System.out.println(x); // 7

  }

}

 


[  ^=  :  XOR 비트 연산 후 할당]

※ 두 비트 중 하나만 1이면 각 비트를 1로 설정 후 할당.

※ 5의 이진수 :  00000101

※ 3의 이진수 :  0000001

※ ^= 연산 시 : 00000110  (※ 이걸 10진수로 변환 시 6)

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x ^= 3; // x = x ^ 3

    System.out.println(x);

  }

}

 


[  >>=  :  Signed right shift 비트 연산 후 할당]

※ 왼쪽 끝 비트 복사해 왼쪽에 밀어넣어 오른쪽으로 해당 숫자 만큼 이동 후, 오른쪽 끝 비트 제거.

※ 5의 이진수 00000101을 오른족으로 3칸 이동 시, 00000000 됨.

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x >>= 3; // x = x >> 3

    System.out.println(x); // 0

  }

}

 


[  <<=  :  Zero fill left shift 비트 연산 후 할당]

※ 오른쪽 끝에 0 밀어넣어 왼쪽으로 해당 숫자만큼 이동 후, 왼쪽 끝 비트 제거.

※ 5의 이진수 00000101을 왼쪽으로 3칸 이동 시, 00101000 됨.

※ 결국, 2의 5승 (= 32) + 2의 3승 (= 8) 더하면 40 됨.

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    x <<= 3; // x = x << 3

    System.out.println(x); // 40

  }

}

 


[  >>>=  :  Zero-fill right shift (※ 오른쪽 이동)]

왼쪽에 0을 밀어 넣어 오른쪽으로 이동시켜 맨 오른쪽 비트 제거.

(예) 9 >>> 1  →  1001 >>> 1  →  0100  →  4

 

public class Hz {

  public static void main(String[] args) {

    int x = 9;

    x >>>= 1; // x = x >>> 1

    System.out.println(x); // 4

  }

}

 

※ (십진수 → 이진수) 변환 방법

PS. <<<= 연산자는 존재 안 함.

 

비교연산자 (Comparison Operators)

 

두 값을 비교. (= 두 값의 관계)

 

[  ==  :  같음]

[  !=  :  같지 않음]

[  >  :  더 큼]

[  <  : 더 작음]

[  >=  :  더 크거나 같음]

[  <=  :  더 작거나 같음]

 


[  ==  :  같음]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x == y); // false

  }

}

 


[  !=  :  같지 않음]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x != y); // true

  }

}

 


[  >  :  더 큼]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x > y); // true

  }

}

 


[  <  : 더 작음]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x < y); // false

  }

}

 


[  >=  :  더 크거나 같음]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x >= y); // true

  }

}

 


[  <=  :  더 작거나 같음]

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    int y = 3;

    System.out.println(x <= y); // false

  }

}

 

 

논리연산자 (Logical Operators)

 

조건 구문 결합.(※ 소문자로 기재.)

 

[  &&  :  그리고]

[  ||  :  또는]

[  !  :  결과의 역 반환]

 


[  &&  :  그리고]

※ 모두 true여야 true 반환.

※ && 대신 소문자 and 표기 시, 에러 발생. (cf. C++은 정상 작동)

※ 3 < x < 10 처럼 표현하면 에러 발생. 아래치럼 나눠서 표현.

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    System.out.println(x > 3 && x < 10); // true

  }

}

 


[  ||  :  또는]

※ 하나라도 true이면 true 반환.

※ || 대신 소문자 or 표기 시, 에러 발생. (cf. C++은 정상 작동)

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    System.out.println(x > 3 || x < 4); // true

  }

}

 


[  !  :  결과의 역 반환]

※ true이면 false 반환. 

※ false이면 true 반환.

※ ! 대신 소문자 not 표기 시, 에러 발생. (cf. C++은 정상 작동)

※ &&・|| 연산자보다 우선.

 

public class Hz {

  public static void main(String[] args) {

    int x = 5;

    System.out.println(!(x > 3 && x < 10)); // false

  }

}

 

 

비트연산자 (Bitwise Operators)

 

2진수로 변환 후, 8자리 비트로 표현해 연산.

 

[  &  :  AND]

[  |  :  OR]

[  ^  :  XOR]

[  ~  :  NOT]

[  >>  :  Signed right shift (※ 오른쪽 이동)]

[  <<  :  Zero fill left shift (※ 왼쪽 이동)]

[  >>>  :  Zero-fill right shift (※ 오른쪽 이동)]

 


[  &  :  AND]

두 비트가 모두 1이면 각 비트를 1로 설정.

(예) 5 & 1  →  0101 & 0001  → 0001 →  1

 


[  |  :  OR]

두 비트 중 하나가 1이면 각 비트를 1로 설정.

(예) 5 | 1→  0101 | 0001 →  0101  →  5

 


[  ^  :  XOR]

두 비트 중 하나만 1이면 각 비트를 1로 설정.

(예) 5 ^ 1 →  0101 ^ 0001  →0100→  4

 


[  ~  :  NOT]

모든 비트 반전. (즉, 1 → 0,  0 → 1 변환)

(예) ~ 5  →  ~0101  →  1010  →  10

 


[  >>  :  Signed right shift (※ 오른쪽 이동)]

왼쪽에 맨 왼쪽 비트의 복사본을 밀어 넣어 오른쪽으로 이동시켜 맨 오른쪽 비트 제거.

(예) 9 >> 1  →  1001 >> 1  →  1100  →  12

 


[  <<  :  Zero fill left shift (※ 왼쪽 이동)]

오른쪽에 0을 밀어넣어 왼쪽으로 이동시켜, 가장 왼쪽 비트 제거.

(예) 9 << 1  →  1001 << 1 →  0010  →  2

 


[  >>>  :  Zero-fill right shift (※ 오른쪽 이동)]

왼쪽에 0을 밀어 넣어 오른쪽으로 이동시켜 맨 오른쪽 비트 제거.

(예) 9 >>> 1  →  1001 >>> 1  →  0100  →  4

 

※ <<<= 연산자는 존재 안 함.

※ 비트연산자 예제는 위 할당연산자 예제 참고.

※ 비트연산자는 어렵지만, 거의 쓸 일이 없음. ㅡㅡ;

※ 비트연산자 개념 강의.

https://youtu.be/yHBYeguDR0A (엔지니어대한민국 님)

 

연산자 우선순위


(산술 > 비교 > ! 논리 > && 및 || 논리)연산자 순.

 

PS. 산술연산자 경우 

1순위 :  * (곱셈) , / (나눗셈) , // (몫) , % (나머지)

2순위 :  + (덧셈), - (뺄셈)

 


[예제]

 

public class Hz {

  public static void main(String[] args) {

    System.out.println(3*4 > 3+4 && !(3*4>10)); 

  }

 

※ 누승 경우, pow() 메서드 이용.



찾아주셔서 감사합니다. Since 2012