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運行結果

Tags: