Java에서 우선순위에 관해 이야기할 때 연산자가 가장 먼저 떠오릅니다. 표현식의 연산자가 평가되는 순서를 지정하기 위해 Java에는 특정 규칙이 정의되어 있습니다. 연산자 우선순위 표현의 용어 그룹을 결정하는 개념입니다. 연산자 우선 순위는 표현식 평가를 담당합니다. ~ 안에 자바 , 괄호() 그리고 배열 아래첨자[] Java에서는 우선순위가 가장 높습니다. 예를 들어 더하기 및 빼기는 왼쪽 시프트 및 오른쪽 시프트 연산자보다 우선순위가 높습니다.
아래에는 우선 순위가 가장 낮은 연산자가 맨 위에 표시되도록 정의된 테이블이 있습니다.
상위 | 운영자 | 유형 | 연관성 |
---|---|---|---|
1) | = += -= *= /= %= | 과제 추가 과제 빼기 할당 곱셈 할당 부서 배정 모듈러스 할당 | 오른쪽에서 왼쪽으로 |
2) | ? : | 삼항 조건부 | 오른쪽에서 왼쪽으로 |
삼) | || | 논리적 OR | 왼쪽에서 오른쪽으로 |
4) | && | 논리 AND | 왼쪽에서 오른쪽으로 |
5) | | | 비트 단위 포함 OR | 왼쪽에서 오른쪽으로 |
6) | ^ | 비트별 배타적 OR | 왼쪽에서 오른쪽으로 |
7) | & | 비트별 AND | 왼쪽에서 오른쪽으로 |
8) | != == | 관계형이 다음과 같지 않음 관계형은 다음과 같습니다. | 왼쪽에서 오른쪽으로 |
9) | < <= > >= 대신에=> | 관계형 미만 관계형 작거나 같음 다음보다 큰 관계형 보다 크거나 같음 관계형 유형 비교(객체만 해당) | 왼쪽에서 오른쪽으로 |
10) | >> << >>> | 부호 확장을 사용한 비트 단위 오른쪽 시프트 비트 왼쪽 시프트 확장이 0인 비트 단위 오른쪽 시프트 | 왼쪽에서 오른쪽으로 |
열하나) | - + | 빼기 덧셈 | 왼쪽에서 오른쪽으로 |
12) | * / % | 곱셈 분할 계수 | 왼쪽에서 오른쪽으로 |
13) | - + ~ ! ( 유형) | 단항 마이너스 단항 플러스 단항 비트 보수 단항 논리 부정 단항 타입캐스트 | 오른쪽에서 왼쪽으로 |
14) | ++ -- | 단항 후증가 단항 후감소 | 오른쪽에서 왼쪽으로 |
열 다섯) | · () [] | 도트 연산자 괄호 배열 첨자 | 왼쪽에서 오른쪽으로 |
우선순위
두 연산자가 단일 피연산자를 공유하는 경우 우선 순위가 가장 높은 연산자가 먼저 적용됩니다. 예를 들어, x + y * z는 x + (y * z)로 처리되는 반면, x * y + z는 (x * y) + z로 처리됩니다. 왜냐하면 * 연산자가 + 연산자에 비해 우선순위가 가장 높기 때문입니다.
Java에서 null을 확인하십시오.
연관성
연관(Associative)은 동일한 우선순위를 갖는 두 연산자가 표현식에 올 때 적용되는 연산자와 관련된 개념입니다. 연관성 개념은 그러한 상황에서 벗어나는 데 매우 도움이 됩니다. a + b - c 표현식이 있다고 가정합니다. (+와 - 연산자는 우선순위가 동일합니다) , 이 표현식은 다음과 같이 처리됩니다. (a + (b - c)) 왜냐하면 이 연산자들은 오른쪽에서 왼쪽으로 결합하기 때문입니다. 반면에 a++++--b+c++는 다음과 같이 처리됩니다. ((a++)+((--b)+(c++))) 단항 후단 증가 및 감소 연산자는 오른쪽에서 왼쪽 결합이기 때문입니다.
우선 순위와 연관성을 사용하여 표현식이 평가되는 방법을 이해하기 위해 아래에 예가 정의되어 있습니다.
식: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
해결책:
1) 위 식에서 우선순위가 가장 높은 연산자는 () . 따라서 괄호가 먼저 오고 먼저 계산됩니다.
x = 4 / 2 + 8 * 4 - 7% 3
2) 이제, /, * 그리고 % 연산자는 동일한 우선순위를 갖고 가장 높은 우선순위를 갖습니다. + 그리고 - 여기서는 연관성 개념을 사용하여 이를 해결합니다. 이러한 연산자의 결합은 왼쪽에서 오른쪽으로 이루어집니다. 그래서, / 운영자가 먼저 가고 그 다음 * 그리고 % 동시에.
x = 2 + 8 * 4 - 7% 3
x = 2 + 32 - 7% 3
자바의 삽입 정렬
x = 2 + 32 - 1
3) 이제, + 그리고 - 두 연산자 모두 동일한 우선 순위를 가지며 이러한 연산자의 연관성은 오른쪽으로 향하지 않습니다. 그래서, + 교환원이 먼저 가고 그 다음 - 갈 것이다.
형식이 있는 Java 문자열
엑스 = 34 - 1
엑스 = 33
최고우선순위.java
//import classes import java.util.*; //creating HighestPrecedence class to evaluate the expression public class HighestPrecedence { //main() method starts public static void main(String[] args) { //initialize variables with default values int x = 2; int y = 5; int z = 12; //calculating exp1, exp2, and exp3 int exp1 = x +(z/x+(z%y)*(z-x)^2); int exp2 = z/x+y*x-(y+x)%z; int exp3 = 4/2+8*4-(5+2)%3; //printing the result System.out.println(exp1); System.out.println(exp2); System.out.println(exp3); } }
산출