Java/運算符
外觀
< Java
計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了很多運算符,主要來說,運算符包括以下幾種:
加、減、乘、除和取余運算符
[編輯]加法、減法與乘法
[編輯]加(+)、減(-)、乘(*)這三種運算符使用起來和數學的一般用法基本相同(當然得到正確結果的前提是不能超過數據類型的取值範圍),先看個例子吧。
public class OperatorBasis
{
public static void main(String args[])
{
int a = 25;
int b = 5;
int sum = a + b;
int difference = a - b;
int product = a * b;
System.out.print(
a + "+" + b + "=" + sum + "\n" +
a + "-" + b + "=" + difference + "\n" +
a + "*" + b + "=" + product + "\n"
);
}
}
使用這個程序,我們成功地計算出了25和5的和、差、積,雖然我們口算的時間比編程序的時間還短不少……然而,我們也可以把a,b賦值為更大一些的數據,比如a=299,b=5449,這樣一來計算機的計算優勢就體現得更為明顯一些。
這個程序還說明了其他的一些問題……
- Java中,「+」運算符還有另外的用法——拼接字符串,而且在使用這個運算符時並不需要手動將數值類型轉化為字符串。
- Java中一條語句可以分為多行(但是不能將一個字符串分在多行書寫),正因為如此,Java的每條語句結尾必須有分號。
- 既然Java中字符串不可能包含「換行」這個字符,我們需要用一種不同的方式來表達,這就是轉義字符,比方說「\n」表示換行,「\"」表示雙引號(否則只有一個雙引號會被解釋為字符串結束),「\\」表示反斜槓自己……
除法和取余運算符
[編輯]除法(/)運算符在Java中的表現未必和其數學意義完全相同。閱讀下面的程序,試着猜測運行結果,然後再試着編譯並運行它……
public class DivisionOperator
{
public static void main(String args[])
{
int a, b, quotient;
a = 25;
b = 5;
quotient = a / b;
System.out.println ( a + "/" + b + "=" + quotient );
a = 5;
b = 3;
quotient = a / b;
System.out.println ( a + "/" + b + "=" + quotient );
}
}
如果您之前沒有學習過任何計算機語言的話,結果可能會令您驚訝——25除以5等於5,毫無疑問,但5/3=1是怎麼回事呢?
在Java中,如果兩個運算數都是整數,那麼除法運算符的運算結果也是整數,並且會省略一切小數點後的值(或者說是兩個整數相除得到的商)。而取余運算符(%),則對應的是兩個整數相除得到的餘數。
您可能覺得這有些難以理解,下面這個程序(給出除法的商和餘數)可以幫助您理解除法運算符和取余運算符的意義……
public class Division
{
public static void main(String args[])
{
int m,n;
m = 99;
n = 10;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = 15;
n = 4;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = 9;
n = 3;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = 0;
n = 10;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = -1;
n = 3;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = -10;
n = 3;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = 10;
n = -3;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
m = -10;
n = -3;
System.out.println ( m + "/" + n + "=" + m/n + "......" + m%n );
}
}
這個程序涵蓋了各種特殊的情況……比方說整除的情況下餘數為0,被除數為0的情況下商和餘數都是0,還有除數/被除數為負數的情況——這顯得有些古怪,不過也確實可以正常運行。
注意在這兩種運算符中,試圖除以0都會造成系統拋出異常。
比較運算符
[編輯]- == 等於
- != 不等於
- > 大於
- < 小於
- >= 大於或等於
- <= 小於或等於
邏輯運算符
[編輯]- && 及
- || 或
- !非
位運算符
[編輯]- >> 右移(帶符號)
- << 左移(帶符號)
- >>> 補零右移
- &按位與
- |按位或
- ~按位取反
- ^按位異或
各種簡便表示法
[編輯]運算符的優先級
[編輯]一元運算符>算術運算符>比較運算符>邏輯運算符>位運算符>賦值運算符