你好!今天我們來看看一個非常重要的主題,即Java中的數字運算。數字在程式設計中無所不在。如果您深入研究學校課程,您會記得電腦上的所有資訊都是以數位格式(零和一的組合)呈現的,也稱為二進位代碼。
程式設計中有很多關於數字的操作,因此我們將透過範例來了解其中最重要的操作:)
算術運算
讓我們從最簡單的事情開始—算術運算。這些是眾所周知的加法(+)、減法(-)、乘法(*)和除法(/)。public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
控制台輸出:
1032
966
32967
30
這些你都已經用過了。您可以為它們添加一個操作%
- 除法的餘數。
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
控制台輸出:
1
在這個例子中,我們將 33 除以 2。結果,我們得到 16,並且還剩下一個不能被 2 - 1 整除的額外「尾巴」。這個「尾巴」將是「除法餘數」運算的結果。Java(以及數學)實作比較運算子。您可能在學校也認識他們:
- 等於 (
==
) - 更多的 (
>
) - 較少的 (
<
) - 大於或等於 (
>=
) - 小於或等於 (
<=
) - 不等於 (
!=
)
==
,且沒有一個符號=
。Java 中的單位符號=
是一個賦值運算符,其中一個變數被賦予一個數字、字串或另一個變數的值。 ![Java 中的數字運算 - 3](https://cdn.javarush.com/images/article/9153dafe-0e58-4fb7-95cd-8a05301abe0d/1024.jpeg)
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// expect false to be printed to the console
}
}
控制台輸出:
999
哎呀!這顯然不是我們所期望的結果。這是一種完全不同類型的數據:我們期望看到boolean
,但得到的是數字。這是因為括號中我們進行的是賦值運算,而不是比較運算。 x=y
值y
(999) 被指派給變量x
,然後我們將其列印x
到控制台。正確選項:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
控制台輸出:
false
現在我們已經正確比較了兩個數字!:) 賦值運算 ( =
) 的另一個特點是它可以「鍊式」完成:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
控制台輸出:
256
請記住:分配是從右到左完成的。此表達式 ( x = y = z
) 將分步驟執行:
- y = z,即 y = 256
- x = y,即 x = 256
一元運算
它們被稱為“unary”,源自於單字“uno”——“一個”。他們之所以得到這個名字,是因為與以前的不同,他們是在一個號碼上進行的,而不是在多個號碼上進行的。這些包括:-
一元減。它反轉數字的符號。
public class Main { public static void main(String[] args) { int x = 999; // change the sign for the first time x = -x; System.out.println(x); // change the sign a second time x= -x; System.out.println(x); } }
控制台輸出:
-999 999
我們使用了一元減號兩次。結果我們的數字先是負數,然後又變成正數了!
-
遞增 (
++
) 和遞減 (--
)一次操作
++
將數字加一,一次操作--
將數字減少相同的單位。public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
控制台輸出:
1000 999
x++
- 字尾表示法 ++x
- 字首表示法 如果將加號和減號放在數字之前或之後,根本差別是什麼?讓我們來看一個例子:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
控制台輸出:
999
有什麼不對!我們想要加x
1 並為變數分配一個新值y
。即y應該等於1000。但我們得到了不同的結果-999。原來並x
沒有增加,增量操作不起作用?它是如何運作的。要驗證這一點,請嘗試在最後將 x 列印到控制台:)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
控制台輸出:
999
1000
事實上,這就是後綴操作被這樣呼叫的原因:它在主表達式之後執行。也就是說,在我們的例子中: int y = x++;
首先它被執行 y = x
(變數 y 將被賦予其原始值x
),然後才被執行 x++
。如果我們對此行為不滿意怎麼辦?您需要使用前綴表示法:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
在這種情況下,它會首先起作用 ++x
,並且只有在那之後才起作用。 y = x;
這種差異值得立即記住,以免在實際程序中犯錯誤,其中所有行為都可能因此而顛倒:)
共同經營
另外,Java中還有所謂的組合操作。他們使用兩種操作的組合:- 任務
- 算術運算
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
控制台輸出:
1032
x += y
方法x = x + y
。只是為了簡潔起見,使用了連續的兩個字元。這也適用於-=
、*=
、/=
和的組合%=
。
邏輯運算
除了對數字的操作之外,Java 還對布林變數 -true
和進行操作false
。這些操作是使用邏輯運算子執行的
-
!
—“非”運算符。反轉布林變數的值public class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
控制台輸出:
false
-
&&
— 運算符「AND」。true
僅當兩個操作數均為 時才傳回值true
。public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
控制台輸出:
false true
第一個運算的結果是
false
,因為其中一個條件為假,即 100 > 200。運算子要求所有條件都為真(例如第二行)&&
才能回傳。true
-
||
—“或”運算符。true
當至少一個操作數為 true 時傳回。我們之前的範例的工作方式有所不同:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
控制台輸出:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION