IT兄弟連 Java語法教程 算符運算符
- 2019 年 10 月 5 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/ITXDL123/article/details/94378303
Java提供了豐富的運算符環境。可以將大部分Java運算符劃分為4組:算術運算符、位運算符、關係運算符以及邏輯運算符。Java還定義了一些用於處理某些特定情況的附加運算符。本章將介紹除類型比較運算符instanceof和新的箭頭運算符->之外的所有Java運算符。
算符運算符
算術運算符用於數學表達式,使用方式與在代數中的使用方法相同。表1中列出了算術運算符。
表1 算術運算符

算術運算符的操作數必須是數值類型。不能為boolean類型使用算術運算符,但是可以為char類型使用算術運算符,因為在Java中,char類型在本質上是int的子集。
1.1 基本算術運算符
基本算術運算符包括加、減、乘和除,對於所有數值類型來說,行為可能和您期望的一樣。一元減號運算符對其唯一的操作數進行求反,一元加號運算符簡單的返回其操作數的值。請記住,當將觸發運算符用於整數數據類型時,結果不會包含小數部分(丟失精度)。
下面的程式演示了算術運算符,該程式還演示了浮點數除法和整數除法之間的區別。
public class BasicMath{
public static void main(String[] args){
System.out.println("整數運算");
int a = 1 + 1;
int b = a * 3;
int c = b / 4;
int d = c - a;
int e = -d;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("e = " + e);
System.out.println("浮點運算");
double da = 1 + 1;
double db = da * 3;
double dc = db / 4;
double dd = dc - da;
double de = -dd;
System.out.println("da = " + da);
System.out.println("db = " + db);
System.out.println("dc = " + dc);
System.out.println("dd = " + dd);
System.out.println("de = " + de);
}
}
編譯並運行這個程式,控制台將顯示如圖1所示的資訊。

圖1 BasicMath運行結果
1.2 求模運算符
求模運算符%可以返回除法操作的餘數,既可以用於浮點數,也可以用於整數。下面的程式演示了%運算符的用法。
public class Modulus{
public static void main(String[] args){
int x = 42;
double y = 42.25;
System.out.println("X對10求模: " + x % 10);
System.out.println("Y對10求模: " + y % 10);
}
}
編譯並運行這個程式,控制台將顯示如圖2所示的資訊。

圖2 Modulus運行結果
1.3 算術與賦值符合運算符
Java提供了可用於將算術運算和賦值運算組合到一起的特殊運算符。您可能知道,類似下面的語句在編程中非常普遍:
a = a + 4;
在Java中,可以重寫這行語句,如下所示:
a += 4;
該版本中使用+=複合賦值運算符。這兩條語句執行相同的動作:都將a的值增加4。下面是另外一個例子:
a = a % 4;
這行程式碼可以重寫成:
a %= 4;
對於這種情況,%=得到a/4的餘數,並將結果存回變數a中。
對於所有的二元運算符,都有相應的複合賦值運算符。因此,以下形式的所有語句:
var = var op expression;
都可以改寫成下面的形式:
var op= expression;
複合賦值運算符具有兩個優點。首先,便於輸入,因為它們是與長格式等價的「簡化版」。其次,有時候它們比等價的長格式版本的效率更高。所以,在專業的Java程式中,會經常看到複合賦值運算符。
下面的程式演示了幾個複合賦值操作。
public class OpEquals{
public static void main(String[] args){
int a = 1;
int b = 2;
int c = 3;
a += 5;
b *= 4;
c += a * b;
c %= 6;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
}
編譯並運行這個程式,控制台將顯示如圖3所示的資訊。

圖3 OpEquals運行結果
1.4 自增與自減運算符
++和--是Java的自增和自減運算符。在後面會看到,它們有一些特殊的屬性,是的它們非常有趣。首先讓我們準確地考察自增和自減運算符的行為。
自增運算符將操作數加1,自減運算符將操作數減1.例如,下面這條語句:
x = x + 1;
可以使用自增運算符改寫為如下形式:
x++;
類似地,下面這條語句:
x = x – 1;
與下面的語句是等價的:
x--;
這些運算符比較獨特,它們既可以顯示為後綴形式,緊隨在操作數後面;也可以顯示為前綴形式,位於操作數之前。在前面的例子中,採用哪種形式是區別的。但是,當自增或自減運算符是表達式的一部分時,兩者之間會出現微妙的、同時也是有價值的差別。對於前綴形式,操作數將先自增或自減,然後表達式使用自增或自減之後的值;對於後綴形式,表達式先使用操作數原來的值,然後在進行自增或自減運算。例如:
x = 42;
y = ++x;
在此,正如所期望的,y被設置為43,因為在將x賦值給y之前就發生了自增操作。因此,「y = ++x;」這行程式碼等價於下面這兩條語句:
x = x + 1;
y = x;
但是,如果將上面的程式碼寫為如下形式:
x = 42;
y = x++;
那麼,會在執行自增運算之前,先將x的值賦值給y,所以y的值為42,當然,對於這兩種情況,x的值都被設置為43.在此,「y = x++;」這行程式碼等價於下面這兩條語句:
y = x;
x = x + 1;
下面的程式演示了自增運算符的用法。
public class IncDec{
public static void main(String[] args){
int a = 1;
int b = 2;
int c;
int d;
c = ++b;
d = a++;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
}
}
編譯並運行這個程式,控制台將顯示如圖4所示的資訊。

圖4 IncDec運行結果