프로그래밍 언어/Java

연산자(Operator) 종류와 연산자의 우선순위

devlara 2024. 6. 25. 16:04
1. 연산자

자바에서는 다양한 연산자가 사용이 되는데 우선순위에 따라 계산이 된다. 

우선순위가 높은 것부터 낮은 것 순으로 나열이 된다.  연산자 우선순위는 하기와 같다.

 

<< 연산자 우선순위 >>

  1. 괄호 () (가장 높은 우선순위)
  2. 증감 연산자 ++, --
  3. 산술 연산자 +, -, *, /, %
  4. 비교/ 관계 연산자 <, >, <=, >=, instanceof
  5. 비교/ 등호 연산자 ==,!=
  6. 논리 AND &
  7. 논리()  XOR ^
  8. 논리 OR |
  9. 논리 AND &&
  10. 논리 OR ||
  11. 조건?:
  12. 대입 =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>= (가장 낮은 우선순위)

이 우선순위를 고려하여 연산이 수행된다.

예를 들어, 곱셈과 나눗셈은 덧셈이나 뺄셈보다 먼저 계산되고, 논리 연산자는 대입 연산자보다 먼저 계산이 된다.

연산자 우선순위를 정확히 기억하지 못하는 경우, 항상 코드의 가독성을 높이기 위해 괄호를 사용하고, 연산 순서를 명시적으로 지정하는 것이 좋다. 또한, 연산자 우선순위에 의해 표현식이 해석되는 것을 방지하기 위해 코드를 작성할 때 항상 명확하게 표현하는 것이 중요하다. 

 

 

 ㅁ 단항연산자(5)

피연산자가 단 하나뿐인 연산자를 말한다.

산술 연산자(+, -, *, /, %), 문자열 결합 연산자(+), 비교 연산자(<, <=, >, >=, ==,!=), 논리 연산자(&&, ||, &, |, ^,!), 대입 연산자(=, +=, -=, *=, /=, %=) 등이 있다.

 

 

 1) 부호 연산자(negation operator): 피연산자의 부호를 변경할 때 사용된다. 주로 숫자 값을 부호로 변경하거나

                                                                 부호에 따라 다른 동작을 수행하는 데에 활용된다. 피연산자 하나만 필요하다.

 

int number = 10;
int negativeNumber = -number; // 양수를 음수로 변경
int positiveNumber = -negativeNumber; // 음수를 양수로 변경

System.out.println("Original number: " + number); // 출력 결과: Original number: 10
System.out.println("Negative number: " + negativeNumber); // 출력 결과: Negative number: -10
System.out.println("Positive number: " + positiveNumber); // 출력 결과: Positive number: 10

 [ Chat GPT 예시 참조]

 

위의 예시에서 - 연산자는 숫자의 부호를 변경하는 데 사용되었다.

number 변수의 값을 음수로 만들기 위해 - 연산자를 사용하여 negativeNumber 변수에 할당하고,

다시 양수로 만들기 위해 - 연산자를 다시 사용하여 positiveNumber 변수에 할당했다.

이러한 부호 연산자는 숫자의 부호를 변경하거나, 특정 조건에 따라 부호를 고려할 때 유용하게 사용될 수 있다.

 

  

2) 증감 연산자(Increment/Decrement Operators): 변수의 값을 증가 또는 감소시키는 데 사용된다.

                                                                                  전위 증감 연산자(++var), 후위 증감 연산자(var++) 등이 있다. 

 

- 전위증감 연산자: 다른 연산을 수행하기 전 피연산자를 먼저 1 증가/감소시키고, 계산한다.

- 후위증감 연산자: 피연산자를 수행하기 전 다른 연산을 먼저 계산하고, 1 증가/감소시킨다. 

int count = 0;
count++; // 후위 증가
int result = ++count; // 전위 증가(+1씩 증가, count를 먼저 1증가시킨다.)
count--; // 후위 감소
int newValue = --count; // 전위 감소(-1씩 감소, 다른 연산을 먼저 증가시킨다.)

[ Chat GPT 예시 참조]

 

 

3) 논리 부정 연산자(logical negation operator): 논리적인 조건을 평가하는 데 사용됩니다. boolen 타입에만 적용됨.

                                                                              참(true)인 경우 거짓(false)을 반환하고, 거짓인 경우 참을 반환한다.

                                                                             조건문이나 논리식에서 특정 조건을 부정할 때 유용하게 사용된다. 

boolean isSunny = true;
boolean isRainy = false;

boolean isNotSunny = !isSunny; // isSunny의 부정값을 할당
boolean isNotRainy = !isRainy; // isRainy의 부정값을 할당

System.out.println("Is it not sunny? " + isNotSunny); // 출력 결과: Is it not sunny? false
System.out.println("Is it not rainy? " + isNotRainy); // 출력 결과: Is it not rainy? true

[ Chat GPT 예시 참조]

 

4) 대입 연산자(Assignment Operators): 변수에 값을 할당하는 데 사용된다.

                                                                   등호(=)를 사용하여 값을 변수에 할당할 수 있다.

                                                                  또한, 복합 대입 연산자들도 있으며  +=, -=, *=, /= 등이 있다.

 

int x = 10;
x += 5; // x = x + 5;

 [ Chat GPT 예시 참조]

 

5) 문자열 결합 연산자(String concatenation operator)

두 개의 문자열을 하나로 결합하는 데 사용된다. 더하기 기호(+)를 사용하여 문자열을 결합한다.  문자열을 서로 연결하여 새로운 문자열을 생성합니다.

1)
String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName; // 문자열 결합
System.out.println("Full Name: " + fullName); // 출력 결과: Full Name: John Doe

2)String greeting = "Hello" + " " + "World";

3)String name = "John";
String message = "Hello, " + name + "!";

[ Chat GPT 예시 참조]

 

ㅁ 이항연산자 (3)

피연산자가 2개인 연산자를 뜻한다.

 

1) 산술연산자(Arithmetic Operators)

사칙연산과 나머지(%)를 구하는 연산자. boolean 타입 제외한 모든 기본 타입에 사용할 수 있다. 

int a = 10;
int b = 5;
int sum = a + b; // 덧셈
int difference = a - b; // 뺄셈
int product = a * b; // 곱셈
int quotient = a / b; // 나눗셈
int remainder = a % b; // 나머지

[ Chat GPT 예시 참조]   

 

 

2) 비교 연산자(comparison operators ): 두 개의 피연산자 간의 관계를 확인하는 데 사용된다.

                                                                 같음(==), 다름(!=), 크거나 같음(>=), 작거나 같음(<=) 등이 있다.

                                                                 조건문(if), 반복문(for, while)에서 주로 이용되어 실행 흐름을 제어할 때 사용된다.

1)
int x = 10;
int y = 5;
boolean isEqual = x == y; // 같음
boolean isNotEqual = x != y; // 다름
boolean isGreaterOrEqual = x >= y; // 크거나 같음
boolean isLessOrEqual = x <= y; // 작거나 같음

2)
int x = 5;
int y = 10;

// 등호 연산자(==)
boolean isEqual = x == y; // false

// 부등호 연산자(!=)
boolean isNotEqual = x != y; // true

// 크기 비교 연산자(>, <, >=, <=)
boolean isGreaterThan = x > y; // false
boolean isLessThan = x < y; // true
boolean isGreaterOrEqual = x >= y; // false
boolean isLessOrEqual = x <= y; // true

 [ Chat GPT 예시 참조]

 

  

 

3) 논리 연산자(Bitwise Operators):   논리연산자의 피연산자는 boolean 타입의 연산을 수행하는 데 사용된다.

                                                            AND(&&), 비트 OR(| | ), 비트 XOR(^), 비트 이동(<<, >>) 등이 있다. 

i)  && (논리 AND) 연산자 : 두 개의 논리식 모두 참 일 경우, 참을 반환, 둘 중 하나라도 거짓이면 거짓을 반환

    (둘 다 참이어야 한다.)
 ii)  || (논리 OR) 연산자 : 두 개의 논리식 둘 중 하나라도 참 일 경우, 참을 반환, 둘 다 거짓이면 거짓을 반환

      (둘다 거짓 이어야 한다.)

int age = 25;
boolean isStudent = true;

// 논리 AND 연산자 (&&)_둘 다 참이어야 전체식이 참이된다.(둘다 참이어야 한다.)
if (age > 18 && isStudent) {
    System.out.println("You are an adult student.");
} else {
    System.out.println("You are not an adult student.");
}


// 논리 OR 연산자 (||)_하나만 참이어도 된다.(둘 다 거짓이어야 된다)
if (age > 18 || isStudent) {
    System.out.println("You are either an adult or a student.");
} else {
    System.out.println("You are neither an adult nor a student.");
}

[ Chat GPT 예시 참조]

 

 

 ㅁ 삼항연산자 (= 조건연산자)

3개의 피연산자를 필요로 하는 연산자이다.

 

1) 조건 연산자(Ternary Operator): 세 개의 피연산자를 가지고 조건식을 평가하고, 참일 때와 거짓일 때 각각 다른 결과를 반환하는 데 사용된다. 식은 하기와 같이 적용된다.

▶ 조건식? 참일 때의 값 : 거짓일 때의 값 형태로 사용된다. 

int x = 10;
int y = 5;
int max = (x > y) ? x : y; // x가 y보다 크면 x, 아니면 y

[ Chat GPT 예시 참조]

 

 

 

 

배경사진 출처: 사진: Unsplash의 Oscar Nord