単項演算子の操作

Nov 11, 2024 am 09:20 AM

定義により、単項演算子は、オペランドまたは変数を 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? 会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? Apr 19, 2025 pm 04:51 PM

一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

名前を数値に変換してソートを実装し、グループの一貫性を維持するにはどうすればよいですか? 名前を数値に変換してソートを実装し、グループの一貫性を維持するにはどうすればよいですか? Apr 19, 2025 pm 11:30 PM

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

MapsTructを使用したシステムドッキングのフィールドマッピングの問題を簡素化する方法は? MapsTructを使用したシステムドッキングのフィールドマッピングの問題を簡素化する方法は? Apr 19, 2025 pm 06:21 PM

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

Intellijのアイデアは、ログを出力せずにSpring Bootプロジェクトのポート番号をどのように識別しますか? Intellijのアイデアは、ログを出力せずにSpring Bootプロジェクトのポート番号をどのように識別しますか? Apr 19, 2025 pm 11:45 PM

intellijideaultimatiateバージョンを使用してスプリングを開始します...

エンティティクラス変数名をエレガントに取得して、データベースクエリ条件を構築する方法は? エンティティクラス変数名をエレガントに取得して、データベースクエリ条件を構築する方法は? Apr 19, 2025 pm 11:42 PM

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

Javaオブジェクトを配列に安全に変換する方法は? Javaオブジェクトを配列に安全に変換する方法は? Apr 19, 2025 pm 11:33 PM

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォームSKUおよびSPUデータベースデザイン:ユーザー定義の属性と原因のない製品の両方を考慮する方法は? eコマースプラットフォームSKUおよびSPUデータベースデザイン:ユーザー定義の属性と原因のない製品の両方を考慮する方法は? Apr 19, 2025 pm 11:27 PM

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Apr 19, 2025 pm 11:36 PM

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。

See all articles