単項演算子の操作

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 09:20:02487ブラウズ

定義により、単項演算子は、オペランドまたは変数を 1 つだけ必要とするものです
これらは、
を増やすなどの単純なタスクを実行することがよくあります。 数値変数を 1 つ増やすか、ブール値を否定します。

Working with Unary Operators

論理補数演算子と論理否定演算子
論理補数演算子 ! は、ブール式の値を反転します。たとえば、
値が true の場合は false に変換され、その逆も同様です。これを説明するには、
を比較してください。 次のステートメントの出力:

boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true

同様に、否定演算子、-は、次のように数値式の符号を反転します
これらのステートメントでは:

double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21

説明に基づいて、一部の演算子が変数を必要とすることは明らかかもしれません
または、特定のタイプであるように作用する表現。たとえば、
を適用することはできません。 ブール式に否定演算子 - を使用したり、論理補数を適用したりすることはできません
演算子 ! を数値式に追加します。試験でこれを試みる質問には注意してください。
コードのコンパイルに失敗する可能性があるためです。たとえば、次のコード行はどれも含まれていません
コンパイルします:

int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE

Java では
を実行できないため、最初のステートメントはコンパイルされません。 数値の論理反転。 2 番目のステートメントはコンパイルされません。
ブール値を数値的に否定することはできません。論理逆演算子を使用する必要があります。
最後に、数値の論理補数を取得したり、ブール変数に整数を代入したりできないため、最後のステートメントはコンパイルされません。

Java 1 の


の true は関係ありません いずれにせよ、0 と false に関連性がないのと同じように。

インクリメント演算子とデクリメント演算子
インクリメント演算子とデクリメント演算子、および -- は、それぞれ数値
に適用できます。 二項演算子と比較して、オペランドの順序または優先順位が高くなります。
で つまり、式に最初に適用されることがよくあります。
インクリメント演算子とデクリメント演算子の順序は
であるため、特別な注意が必要です。 関連するオペランドに適用すると、式の処理方法に違いが生じる可能性があります。 前置インクリメント演算子 および 前置デクリメント演算子 と呼ばれる演算子がオペランドの前に配置されている場合、演算子が最初に適用され、値が返されます
式の新しい値です。また、演算子がオペランドの後に配置される場合は、
後置インクリメント演算子 および 後置デクリメント演算子 と呼ばれる場合、式の元の値が返され、値が返された後に演算子が適用されます。
これがイラストの例です:

boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true

最初の前置インクリメント演算子は、カウンターの値を更新し、新しい値を出力します
値は 1。次のポストデクリメント演算子もカウンタの値を更新しますが、
を出力します。 デクリメントが発生する前の値。
現実世界ではそれほど一般的ではありませんが、認定試験でよく行われる方法の 1 つは
複数のインクリメント演算子またはデクリメント演算子を同じ行の 1 つの変数に適用します:

double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21

これは、x が 3 つ変更されるため、前の例よりも複雑です
同じ回線で何度も。変更されるたびに、式が左から右に移動するので、
x の値が変化し、異なる値が変数に割り当てられます。思い出していただけると思います
演算子の優先順位に関する議論からわかるように、
では演算の順序が重要な役割を果たします。 この例を評価します。
では、このコードをどうやって読むのでしょうか?まず、x がインクリメントされ、式
に返されます。 これを 5 で乗算します。これは次のように単純化できます。

int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE

次に、x はデクリメントされますが、元の値 4 が式で使用され、
となります。 これ:

int counter = 0;
System.out.println(counter); // Outputs 0
System.out.println(++counter); // Outputs 1
System.out.println(counter); // Outputs 1
System.out.println(counter--); // Outputs 1
System.out.println(counter); // Outputs 0

x の最後の割り当てにより、値が 2 に減ります。これは前置インクリメント演算子であるため、その値が式に返されます。

int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);

最後に、倍数と除算を左から右に評価し、加算で終了します。結果は次のように出力されます。

int y = 4 * 5 / x-- + --x; // x assigned value of 4

結論として、単項演算子は、値の増加、否定、反転などの単一オペランドの迅速な演算を可能にすることで、コードを簡素化および合理化します。これらは、効率的なロジック、コンパクトな式、データの簡潔な制御に不可欠であり、プログラミングの読みやすさと機能性を高めます。

以上が単項演算子の操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。