算術操作符
java的基本算術操作符與其他大多數程序設計語言是相同的。
其中包括加號(+)、減號(-)、除號(/)、乘號(*)以及取模操作符(%,它從整數除法中產生餘數)。
整數除法會直接去掉結果的小數位,而不是四捨五入地圓整結果。
Java也使用一種來自C和C++的簡化符號同時進行運算與賦值操作。
這用操作符後緊跟一個等號來表示,它對於Java中的所有操作符都適用,只要其有實際意義就行。
例如,要將x加4,並將結果賦回給x,可以這麼寫:x+=4.
下面這個例子展示了各種算數操作符的用法:
//:operators/MathOps.java
//Demonstrates the mathematical operators.
import java.util.*;
import static net.mindview.util.Print.*;
public class MathOps{
public static void main(String [] args){
//Create a seeded random number generator:
Random rand=new Random(47);
int i,j,k;
//Choose value from 1 to 100:
j=rand.nextInt(100)+1;
print(”j:“+j);
k=rand.nextInt(100)+1;
print(“k:”+k);
i=j+k;
print(“j+k:”+i);
i=j-k;
print(“j-k:”+i);
i=k/j;
print(“k/j:”+i);
i=k*j;
print(“k*j:”+i);
i=k%j;
print(“k%j:”+i);
j%=k;
print(“j%=k:”+j);
//floating-point number tests:
float u,v,w;//Applies to doubles,too
v=rand.nextFloat();
print(“v:”+v);
w=rand.nextFloat();
print(“w:”+w);
u=v+w;
print(“v+w:”+u);
u=v-w;
print(“v-w:”+u);
u=v*w;
print(“v*w:”+u);
u=v/w;
print(“v/w:”+u);
//The following also works for char.
//byte,short,int ,long and double:
u+=v;
print(“u+=v:”+u);
u-=v;
print(“u-=v:”+u);
u*=v;
print(“u*=v:”+u);
u/=v;
print(“u/=v:”+u);
}
}/*Output:
j:59
k:56
j+k:115
j-k:3
k/j:0
k*j:3304
k%j:56
j%=k :3
v:0.5309454
w:0.0534122
v+w:0.5843576
v-w:0.47753322
v*w:0.028358962
v/w:9.940527
u+=v:10.471473
u-=v:9.940527
u*=v:5.2778773
u/=v:9.940527
*///:~
要生成數字,程序首先會創建一個Random類的對象。
如果在創建過程中沒有傳遞任何參數,那麼Java就會將當前時間作爲隨機數生成器的種子,
並由此在程序每一次執行時都產生不同的輸出。
但是,在本書的示例中,示例末尾所展示的輸出都儘可能一致,這一點很重要,
因爲這樣就使得這些輸出可以用外部工具來驗證。
通過在創建Random對象時提供種子(用於隨機數生成器的初始化值,隨機數生成器對於特定的種子值總是產生相同的隨機數序列),
就可以在每一次執行程序時都生成相同的隨機數,因此其輸出是可驗證的。
要想生成更多的各種不同的輸出,可以隨意移除本書示例中的種子。
通過Random類的對象,程序可生成許多不同類型的隨機數字。
做法很簡單,只需調用方法nextInt()和nextFloat()即可(也可以調用nextLong()或者nextDouble()).
傳遞給nextInt()的參數設置了所產生的隨機數的上限,而其下限爲0,
但是這個下限並不是我們想要的,因爲它會產生除0的可能性,因此我們隊結果做了加1操作。
一元加、減操作符(Unary minus and plus operators )
一元減號(-)和一元加號(+)與二元減號和加號都使用相同的符號。
根據表達式的書寫形式,編譯器會自動判斷出使用的是哪一種。例如語句:
x=-a;
的含義是顯然的。編譯器能正確識別下述語句”
x=a*-b;
但讀者會被搞糊塗,所以有時更明確地攜程:
x=a*(-b);
一元減號用於轉變數據的負號,而一元加號只是爲了與一元減號相對應,但是它唯一的作用僅僅是將較小類型的操作數提升爲int。