Java で優先順位について話すとき、まず演算子が思い浮かびます。 Java では、式内の演算子が評価される順序を指定する特定のルールが定義されています。 演算子の優先順位 式内の用語のグループを決定する概念です。演算子の優先順位は式の評価を担当します。で ジャワ 、 括弧() そして 配列の添字[] Java では最も高い優先順位を持ちます。たとえば、加算と減算は、左シフト演算子および右シフト演算子よりも優先されます。
以下は、優先順位の最も低い演算子が先頭に表示されるように定義されたテーブルです。
優先順位 | オペレーター | タイプ | 結合性 |
---|---|---|---|
1) | = += -= *= /= %= | 割り当て 加算の代入 減算の代入 乗算の代入 部門の割り当て モジュラスの割り当て | 右から左に |
2) | ? : | 3項条件 | 右から左に |
3) | || | 論理和 | 左から右へ |
4) | && | 論理積 | 左から右へ |
5) | | | ビットごとの包含的 OR | 左から右へ |
6) | ^ | ビットごとの排他的論理和 | 左から右へ |
7) | & | ビットごとの AND | 左から右へ |
8) | != == | 関係は次と等しくない 関係は次と等しい | 左から右へ |
9) | < <= > >= インスタンスの=> | 以下の関係 以下の関係 関係が次より大きい 関係以上 型の比較 (オブジェクトのみ) | 左から右へ |
10) | >> << >>> | 符号拡張付きのビット単位の右シフト ビット単位の左シフト ゼロ拡張を伴うビット単位の右シフト | 左から右へ |
十一) | - + | 引き算 追加 | 左から右へ |
12) | * / % | 乗算 分割 係数 | 左から右へ |
13) | - + ~ ! ( タイプ) | 単項マイナス 単項プラス 単項ビット単位の補数 単項論理否定 単項型キャスト | 右から左に |
14) | ++ -- | 単項ポストインクリメント 単項ポストデクリメント | 右から左に |
15) | · () [] | ドット演算子 括弧 配列の添え字 | 左から右へ |
優先順位
2 つの演算子が 1 つのオペランドを共有する場合、最も高い優先順位を持つ演算子が最初になります。たとえば、x + y * z は x + (y * z) として扱われますが、x * y + z は (x * y) + z として扱われます。これは、* 演算子が + 演算子の比較で最も優先されるためです。
jsonファイルを読む
結合性
結合は、同じ優先順位を持つ 2 つの演算子が式に含まれる場合に適用される演算子に関連する概念です。連想性の概念は、そのような状況から抜け出すのに非常に役立ちます。 a + b - c という式があるとします。 (+ 演算子と - 演算子は同じ優先順位を持ちます) 、この式は次のように扱われます。 (a + (b - c)) これらの演算子は右から左への結合であるためです。一方、a++++--b+c++ は次のように扱われます。 ((a++)+((--b)+(c++))) 単項の後置インクリメント演算子とデクリメント演算子は右から左へ結合するためです。
優先順位と結合性を使用して式がどのように評価されるかを理解するために、例を以下に定義します。
式: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
解決:
1) 上記の式で、最も優先順位の高い演算子は次のとおりです。 () 。したがって、括弧が最初に来て、最初に計算されます。
Java文字列をブール値に変換
x = 4 / 2 + 8 * 4 - 7 % 3
2) さて、 /、* そして % 演算子は同じ優先順位を持ち、以下の演算子よりも高くなります。 + そして - ここでは、結合性の概念を使用してそれらを解決します。これらの演算子の結合は左から右へ行われます。それで、 / 演算子が最初に進み、その後に進みます * そして % 同時に。
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) さて、 + そして - 両方の演算子も同じ優先順位を持ち、これらの演算子の結合性は右にありません。それで、 + オペレーターが最初に行き、その後に行きます - 行きます。
x = 34 - 1
x = 33
HighestPrecedence.java
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); } }
出力