このセクションでは、 オペレーター Java での優先順位 例とともに。
演算子の優先順位とは何ですか?
の 演算子の優先順位 2 つの式がどのようにバインドされるかを表します。式では、オペランドを持つ演算子のグループ化を決定し、式の評価方法を決定します。
式を解くときは 2 つのことに留意する必要があります。1 つ目は 優先順位 そして2つ目は 結合性 。
優先順位
優先順位は、さまざまなタイプの演算子をオペランドとともにグループ化する際の優先順位です。これは、式に優先順位の高いまたは低い演算子が複数ある場合にのみ意味があります。優先順位の高い演算子が最初に評価されます。優先順位の低い演算子を最初に評価したい場合は、括弧を使用してオペランドをグループ化してから評価する必要があります。
結合性
式に同じ優先順位の演算子が 3 つ以上ある場合は、結合則に従う必要があります。このような場合、式は次のいずれかで解決できます。 左から右へ または 右から左に、 それに応じて。
Java 演算子の優先順位表
次の表は、Java で使用される演算子の優先順位と結合性を説明しています。
優先順位 | オペレーター | タイプ | 結合性 |
---|---|---|---|
15 | () [] · | 括弧 配列の添え字 メンバー選択 | 左から右へ |
14 | ++ -- | 単項ポストインクリメント 単項ポストデクリメント | 右から左に |
13 | ++ -- + - ! ~ (タイプ) | 単項前置インクリメント 単項プリデクリメント 単項プラス 単項マイナス 単項論理否定 単項ビット単位の補数 単項型キャスト | 右から左に |
12 | * / % | 乗算 分割 係数 | 左から右へ |
十一 | + - | 追加 引き算 | 左から右へ |
10 | << >> >>> | ビット単位の左シフト 符号拡張付きのビット単位の右シフト ゼロ拡張を伴うビット単位の右シフト | 左から右へ |
9 | < <= > >= インスタンスの=> | 以下の関係 以下の関係 関係が次より大きい 関係以上 型の比較 (オブジェクトのみ) | 左から右へ |
8 | == != | 関係は次と等しい 関係は次と等しくない | 左から右へ |
7 | & | ビットごとの AND | 左から右へ |
6 | ^ | ビットごとの排他的論理和 | 左から右へ |
5 | | | ビットごとの包含的 OR | 左から右へ |
4 | && | 論理積 | 左から右へ |
3 | || | 論理和 | 左から右へ |
2 | ? : | 3項条件 | 右から左に |
1 | = += -= *= /= %= | 割り当て 加算の代入 減算の代入 乗算の代入 部門の割り当て モジュラスの割り当て | 右から左に |
注: 数値が大きいほど優先順位が高くなります。
Java 演算子の優先順位の例
例を通して演算子の優先順位を理解しましょう。次の式を考えて答えを推測してください。
1 + 5 * 3
答えは次のようになると思われるかもしれません 18 しかしそうではありません。乗算 (*) 演算子は加算 (+) 演算子よりも優先されるためです。したがって、式は最初に 5*3 を評価し、次に残りの式、つまり 1+15 を評価します。したがって、答えは次のようになります。 16 。
別の例を見てみましょう。次の式を考えてみましょう。
x + y * z / k
上記の式では、* および / の演算は優先順位により + より前に実行されます。結合性により、y は k で除算される前に z で乗算されます。