Day7-23.Mathematical operators

算術操作符

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。


發佈了28 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章