根據定義,一元運算子是只需要一個運算元或變數來
函數。它們經常執行簡單的任務,例如增加
數值變數減一,或對布林值求負。
邏輯補碼與否定運算子
邏輯補運算子 !,翻轉布林運算式的值。例如,
如果值為 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 中你無法執行
數值的邏輯反轉。第二條語句無法編譯,因為您
無法對布林值進行數值求反;您需要使用邏輯逆運算子。
最後,最後一條語句無法編譯,因為您無法取得數值的邏輯補碼,也無法將整數指派給布林變數。
在 Java 1 中和 true 在
中沒有關係 無論如何,就像 0 和 false 沒有關係一樣。自增和自減運算子
遞增和遞減運算子以及 -- 分別可以應用於數字
與二元運算子相比,操作數 和 具有更高的順序或優先權。在
換句話說,它們通常首先應用於表達式。
自增和自減運算子需要特別小心,因為它們的順序
應用於相關操作數可以改變表達式的處理方式。如果運算子放在運算元之前,稱為預自增運算子和預自減運算子,則先套用運算子並傳回值
是表達式的新值。或者,如果運算符位於操作數之後,
稱為後自增運算子和後自減運算子,則傳回表達式的原始值,傳回值後套用運算子
這是範例圖:
boolean x = false; System.out.println(x); // false x = !x; System.out.println(x); // true
第一個預自增運算子更新計數器的值並輸出新的
值為 1。下一個後遞減運算子也會更新 counter 的值,但輸出
遞減發生之前的值。
認證考試中的常見做法(儘管在現實世界中不太常見)是
將多個遞增或遞減運算子套用至同一行上的單一變數:
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 被修改了三個
多次在同一條線上。每次修改時,隨著表達式從左到右移動,
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中文網其他相關文章!