🎨 Programming/JAVA

[JAVA] 3. 연산자 및 연산자 우선순위

ryang x2 2020. 6. 12. 02:35
728x90
반응형

#연산자(operator)

1. 연산자란, 프로그램에서 데이터를 처리하여 결과를 산출하고 수행하는 문자 또는 기호라고 볼 수 있다.

 

- 연산자(operator) : 어떠한 기능을 수행하는 기호 (ex +, -, *, / 등)

- 피연산자(operand) : 연산자의 작업 대상 (ex 변수, 상수, 수식 등)

 

 

2.연산자 종류

 

  • 산술연산자

산술 연산자 연산 결과
+ c = a+b
(a에 있는 값에서 b를 덧셈 한 후 c 에 대입)
- c = a-b
(a에 있는 값에서 b를 뺄셈 한 후 c 에 대입)
* c = a*b
(a에 있는 값에서 b를 곱셈 한 후 c 에 대입)
/ c = a/b
(a에 있는 값에서 b를 나눗셈 한 후 c 에 대입)
% c = a%b
(a에 있는 값에서 b에 있는 값을 나눈다음 나머지를 c에 대입)
int var1 = 10;
int var2 = 3;
int result1 = var1 + var2;
int result2 = var1 - var2;
int result3 = var1 * var2;
int result4 = var1 / var2;      // 결과: 3(정수형)
int result5 = var1 % var2;

System.out.println("var1 + var2 = " + result1);
System.out.println("var1 - var2 = " + result2);
System.out.println("var1 * var2 = " + result3);
System.out.println("var1 / var2 = " + result4);
System.out.println("var1 % var2 = " + result5);

산술연산 예시 결과

* 정수형 / 정수형 - > 정수형 

* 실수형 / 정수형, 정수형 / 실수형, 실수형 / 실수형 - > 실수형

 

  • 비교연산자 

비교 연산자 연산 결과
x > y x가 y보다 크면, true 아니면 false (초과)
x < y x가 y보다 작으면, true 아니면 false (미만)
x >= y x가 y보다 크거나 같으면, true 아니면 false (이상)
x <= y x가 y보다 작거나 같으면, true 아니면 false (이하)
x == y x와 y가 같으면, true 아니면 false 
x != y x와 y가 다르면, true 아니면 false 
int var1 = 10;
int var2 = 3;
boolean result1 = var1 > var2;
boolean result2 = var1 < var2;
boolean result3 = var1 >= var2;
boolean result4 = var1 <= var2;
boolean result5 = var1 == var2;
boolean result6 = var1 != var2;

System.out.println("var1 > var2 = " + result1);
System.out.println("var1 < var2 = " + result2);
System.out.println("var1 >= var2 = " + result3);
System.out.println("var1 <= var2 = " + result4);
System.out.println("var1 == var2 = " + result5);
System.out.println("var1 != var2 = " + result6);

비교 연산 예시

 

  • 증감연산자 

증감 연산자 연산 결과
++ 1씩 증가시킨다.
-- 1씩 감소시킨다.
int var1 = 10;
int result = 0;
System.out.println("현재 var1의 값 : " + var1);
System.out.println("현재 var1의 값 : " + ++var1);     //  ++ 를 먼저 계산 후 출력
System.out.println("현재 var1의 값 : " + var1);
        
result = var1++;    // var1 뒤에 ++ 연산자는 대입 먼저 후 연산을 하기 때문에 ;(세미콜론) 이후 더한다.
System.out.println("현재 result의 값 : " + result);
System.out.println("현재 var1의 값 : " + var1);

증감 연산 예시

 

  • 대입연산자 

대입 연산자 연산 결과
+= 기본변수의 값에 값을 더한다
-= 기본변수의 값에 값을 뺀다
*= 기본변수의 값에 값을 곱한다
/= 기본변수의 값에 값을 나눈다
%= 기본변수의 값에 값을 나머지를 구한다

EX>

a = 10; 

a += 1; ( a = a + 1; 과 같은 표현) 

 

a에 1을 더한 후 a에 저장해준다. 고로 a = 11이 된다.

 

예시 1)

int var1 = 100, var2 = 100, var3 = 100, var4 = 100, var5 = 100; //  변수타입이 동일한 경우, 나열가능하다.
var1 += 10;     // var1 = var1 + 10;
var2 -= 10;     // var1 = var1 - 10;
var3 *= 10;     // var1 = var1 * 10;
var4 /= 10;     // var1 = var1 / 10;
var5 %= 10;     // var1 = var1 % 10;

System.out.println("var1 += 10 : " + var1);
System.out.println("var2 -= 10 : " + var2);
System.out.println("var3 *= 10 : " + var3);
System.out.println("var4 /= 10 : " + var4);
System.out.println("var5 %= 10 : " + var5);

대입 연산 예시1

예시 2)

int var6 = 100;
var6 =- 10;     // =- 순서가 바꿔 쓸 경우, -10 숫자로 인식하여 대입한다. 산술되지 않음!!(유의)
System.out.println("var6 =- 10 : " + var6);

대입 연산 예시2

 

  • 논리연산자( ||, && )

1. 논리연산자란,

피연산자로 비교하는 연산자 양쪽 모두 반드시 boolean 형일 때 사용가능하다.

 

2. 논리연산자 종류 

&&(AND) - 피연산자 양 쪽 모두 true이면 true이다.

|| (OR) - 피연산자 중 어느 한 쪽이 true이면 true이다.

 

x y x || y x && y
true true true true
true false true false
false true true false
false false false false
int var1 = 10;
int var2 = 3;
boolean result1 = var1 > var2;
boolean result2 = var1 <= var2;
boolean result3 = result1 && result2;
boolean result4 = result1 || result2;

boolean result5 = !result1;     //  !(not 연산 : 부호를 반대로 변경)

System.out.println("result1 : " + result1);
System.out.println("result2 : " + result2);
System.out.println("result3 : " + result3);
System.out.println("result4 : " + result4);
System.out.println("result5 : " + result5);

논리 연산 예시

 

  • 비트연산자

영상 쪽의 일이 아닌 경우, 거의 쓸일이 없기 때문에 부담갖지 않아도 된다. 간단히 알아두는 정도로 마무으리~!

비트 연산자 연산 결과
& (AND) 피연산자 양 쪽의 값이 1이면, 1을 결과로 얻고 나머지는 0
| (OR) 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻고 나머지는 0
~ (NOT) 피연산자를 이진수로 표현했을 때 0은 1로, 1은 0으로
^ (XOR) 피연산자의 값이 다를 때만 1을 결과로 얻고 나머지는 0
<< 피연산자의 각 자리(2진수로 표현했을 때)를 왼쪽으로 이동
>> 피연산자의 각 자리(2진수로 표현했을 때)를 오른쪽으로 이동
(양수일 때 0, 음수 일때 1로 채워짐)
>>> 피연산자의 각 자리(2진수로 표현했을 때)를 오른쪽으로 이동
(왼쪽 비트 무조건 0으로 채워짐)

!! 기본적인 2진법 계산법 !!

           32    16     8     4      2     1
                    1      1     1      0     0 (28)
                    1      1     0      0     1 (25)
------------------------------------------------------
&연산           1      1     0      0     0 (24)
|연산             1      1     1      0     1 (29)


int var1 = 28;
int var2 = 25;
int var3 = 5;

System.out.println("var1 & var2 : " + (var1 & var2));
System.out.println("var1 | var2 : " + (var1 | var2));
System.out.println("var1 ^ var2 : " + (var1 ^ var2)); 
// ^(XOR) : 부호가 서로 다르면 true 같으면 false

System.out.println("var1 << var2 : " + (var1 << var2)); 
// << : 해당 숫자 만큼 좌측으로 자리수를 이동  ex) 101 >> 2 -> 1

System.out.println("var1 >> var2 : " + (var1 >> var2)); 
// >> : 해당 숫자 만큼 우측으로 자리수를 이동  ex) 101 << 2 --> 10100

비트 연산 예시

 

  • 삼항연산자

1. 삼항연산자의 표현

변수 = (조건문) ? true 일 때 값 : false 일 때 값

삼항 연산자

int var1 = 15;
char result = (var1 == 10) ? 'O' : 'X';
System.out.println("결과 : " + result);

삼항 연산 예시


 

#연산자 우선순위

연산자가 두개 이상인 경우 , 우선순위에 의해서 연산 순서가 결정된다.

 

코드 작성시 자연스럽게 익히게 되는 부분이므로 부담 갖지 않아도 된다.!

 

우선순위 연산자 내용
1 () , [] 괄호 / 대괄호
2 !, ~, ++, -- 부정 / 증감 연산자
3 *, /, % 곱셈 / 나눗셈 산술연산자
4 +, - 덧셈 / 뺄셈 산술연산자
5 <<, >>, >>> 비트단위의 쉬프트 연산자
6 <, <=, >, >= 관계 비교연산자
7 ==, != 비교
8 & 비트단위의 논리연산자
9 ^ 논리
10 | 논리
11 && 논리곱 연산자
12 || 논리합 연산자
13 ? : 조건 연산자
14 =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, ~= 대입 / 할당연산자 (★중요 젤 마지막!)

 

728x90
반응형