[Java] 연산자와 순위

▪ Java의 연산자는 아래 항목의 순서대로 우선순위를 가진다. (1번이 가장 높은 우선순위, 뒤로 갈수록 낮은 우선순위)


1순위
▫  첨자연산자 : (좌 → 우) 배열의 원소에 접근하기 위한 연산자.

int[] numbers = {1,2,3};
System.out.println(numbers[0]);

▫ 멤버연산자: .(좌 → 우) 어떠한 객체나 타입의 멤버에 접근하기 위해 사용한다.

System.out.println

System : 클래스
out : 멤버변수, 정적 , 객체, 메서드 아님
println() : 메서드 , public, 객체를 통해서 접근했기때문에 비정적임 


2순위

▫ 후위 증가 연산자 : ++(좌 → 우) 해당 연산자가 포함된 구문이 실행된 이후에 어떠한 정수형 변수에서 1을 더하기 위해 사용한다. 해당 변수 뒤에 연산자를 기입한다. 가령, x++
▫ 후위 감소 연산자 : --(좌 → 우) 해당 연산자가 포함된 구문이 실행된 이후에 어떠한 정수형 변수에서 1을 빼기 위해 사용한다. 해당 변수 뒤에 연산자를 기입한다. 가령, x--

3순위

▫ 논리 NOT 연산자(부정) : ! (우 → 좌) 후행하는 논리를 부정한다.true 를 false로, false를 true로 역정하며, 후행값은 반드시 논리형이어야한다.
▫ 양의 부호 : +(우 → 좌) 후행하는 숫자를 양수로 만든다. 생략해도 관계없으며, 더하기 연산 (합)이 아님에 유의한다.
▫ 음의 부호 :ㅣ -(우 → 좌) 후행하는 숫자를 음수로 만든다. 생략해도 관계없으며, 빼기 연산 (차)이 아님에 유의한다.
가령, -5는 음수인 5이다.

▫ 전위 증가 연산자 : `++` (우 → 좌) 해당 연산자가 포함된 구문이 실행되기 전에 어떠한 정수형 변수에 1을 더하기 위해 사용한다. 해당 변수 앞에 연산자를 기입한다. 가령, `++x`.
▫ 전위 감소 연산자 : `--` (우 → 좌) 해당 연산자가 포함된 구문이 실행되기 전에 어떠한 정수형 변수에서 1을 빼기 위해 사용한다. 해당 변수 앞에 연산자를 기입한다. 가령, `--x`.
▫ 형 변환(타입 캐스트) 연산자 : `(타입 이름)` (우 → 좌) 후행하는 값의 타입(형)을 강제로 변환한다. 가령, `(Object) "Hello"`의 연산 결과의 형은 문자열이 아닌 `Object` 타입이다. 

4순위
▫ 곱셈 연산자 : `*` (좌 → 우) 좌항과 우항을 곱한다.
▫ 나눗셈 연산자 : `/` (좌 → 우) 좌항을 우항으로 나눈 몫을 구한다.
▫ 나머지 연산자 : `%` (좌 → 우) 좌항을 우항으로 나눈 나머지를 구한다.

5순위
▫ 덧셈 연산자 : `+` (좌 → 우) 좌항과 우항을 더한다.
덧셈연산자는 문자열 합치기(String Concatenation)를 수행할 때에도 사용하는데, 문자열과 문자열이지 않은 것을 더하면 문자열이지 않은 것을 문자열로 변경하여 합쳐진 문자열 하나로 반환하게 된다.
가령, 5+"살입니다."의 연산결과는 "5살입니다."가 된다. // CONCAT할 때 Concatenation 봤음


▫ 뺄셈 연산자 : `-` (좌 → 우) 좌항에서 우항을 뺀다.

6순위 : <<,>>,<<<,>>>,비트 연산 생략

 



7순위
▫ 미만 관계 연산자 : < (좌 → 우) 좌항 값이 우항 값 미만인가에 대한 여부를 구한다.
▫ 이하 관계 연산자 : <= (좌 → 우) 좌항 값이 우항 값 이하인가에 대한 여부를 구한다.
▫ 초과 관계 연산자 : > (좌 → 우) 좌항 값이 우항 값 초과인가에 대한 여부를 구한다.
▫ 이상 관계 연산자 : >= (좌 → 우) 좌항 값이 우항 값 이하인가에 대한 여부를 구한다.
▫ instanceOf 연산자 : `instanceOf` (좌 → 우) 좌항 객체가 우항 타입으로 형 변환 될 수 있는가의 여부를 구한다. 가령, `"Hello" instanceOf Object`는 `true`가 된다. 주로, 강제 형변환을 실시하기 전 `ClassCastException` 예외가 발생하는 것을 막기 위해 사용한다.

8순위
▫ 동등 관계 연산자 : == (좌 → 우) 좌항과 우항의 스택 영역의 값이 같은지의 여부를 구한다.
▫ 부등 관계 연산자 : != (좌 → 우) 좌항과 우항의 스택 영역의 값이 다른지의 여부를 구한다.

9순위
▫ 비트 AND 연산자 : 생략

10순위
▫ 비트 XOR 연산자 : 생략

11순위
▫ 비트 OR 연산자 : 생략

12순위
▫ 논리 AND 연산자 : `&&` (좌 → 우)  

13순위
▫ 논리 OR 연산자 : `||` (좌 → 우) 좌항의 논리 값과 우항의 논리 값 중 하나 이상이 참(`true`)인가의 여부를 구한다.

14순위
▫ 삼항 연산자 : `... ? ... : ...` (우 → 좌) 어떠한 논리값의 이ㅕ부에 따라 서로 다른 값으로 대치한다. 가령, 10%2 == 0? "참":"거짓" 의 결과는 "참"이다.

15순위 
▫ 대입 연산자 : `=` (우 → 좌) 우항의 값을 좌항의 변수나 상수에 대입한다.
▫ 곱셈 복합 대입 연산자 : `*=` (우 → 좌) 좌항의 값과 우항의 값을 곱한 값을 좌항의 변수에 대입한다.
▫ 나눗셈 복합 대입 연산자 : `/=` (우 → 좌) 좌항의 값을 우항의 값으로 나눈 몫을 좌항의 변수에 대입한다.
▫ 나머지 복합 대입 연산자 : `%=` (우 → 좌) 좌항의 값을 우항의 값으로 나눈 나머지를 좌항의 변수에 대입한다.
▫ 덧셈 복합 대입 연산자 : `+=` (우 → 좌) 좌항의 값에 우항의 값을 더한 값을 좌항의 변수에 대입한다.
▫ 뺄셈 복합 대입 연산자 : `-=` (우 → 좌) 좌항의 값에서 우항의 값을 뺀 값을 좌항의 변수에 대입한다.

'Back > Java' 카테고리의 다른 글

[Java] 객체  (0) 2023.02.08
[Java] 일반 문법(반복문)  (0) 2023.02.08
[Java] 타입(Type) 그리고 변수와 상수  (0) 2023.02.07
[Java] 클래스(Class)  (0) 2023.02.07
[Java] Java 기본 개념  (0) 2023.02.07