算術運算符和表達式

表達式

當你小時候在學校遇到的令人討厭的數學題時,是否抱怨過,發誓今後再也不學數學了?現在,你可以讓計算機幫你完成這些數學題。本單元的前面提到過,向計算機發出的涉及運算的指令被稱爲表達式。表達式告訴計算機,我們需要加工的數據(操作數)和加工的方法(運算符)。表達式會返回數據加工的結果(表達式的值)。一個常量會一個變量名是最簡單的表達式,它返回它本身的值。我們可以像使用常量和變量一樣使用表達式,甚至可以把它作爲其他表達式的操作數。計算機程序中經常使用表達式完成下面這樣的任務:

1.修改變量的值;

2.在程序中計數;

3.在程序中使用數學公式。

小明從工資中拿出20000元炒股。第一個月由於利好消息刺激,他的股票淨增了500元,不幸的是,第二個月內又虧損了700元,第三個月,小明的股票比上月增長15%,他賣掉了1/2的股票買基金。試問小明現在還有多少錢的股票?

我們可以編寫程序是用來計算小明的股票市值,如下:

01./*  小明的股票市值

02.2008/6/13    */

03.class Stock {

04.public static void main(String[] args){

05.float money = 20000f;

06.System.out.println("初始金額:"+money);

07.//淨增500元

08.money = money + 500

09.System.out.println("1個月後:"+money); 

10.//虧損700元

11.money = money - 700

12.System.out.println("2個月後:"+money); 

13.//增值15%

14.money = money + money * 0.15f ;

15.System.out.println("3個月後:"+money); 

16.//剩餘一半資金

17.money = money / 2;

18.System.out.println("期末價值:"+money);     

19.}

20.}



上面的程序使用了好幾種算術表達式。請仔細閱讀程序,並試着編譯和執行它。


和我們在前面創建的其他程序一樣,Stock程序也只使用了main()語句塊。首先創建money變量,並將其指定爲float類型變量,用於在程序中存放初始金額。然後在下面各個語句中分別描述股票價值的情況和變化。

算術運算符

程序Stock.java使用了4種數學表達式計算股票金額。這些表達式中使用的符號(+、-、*和/)與我們數學課中的算術符號類似。它們有一個專門的術語: 算術運算符。在Java程序中用這些運算符來處理數據運算。運算符接受一個或多個操作數,產生新值,或改變原操作數的值

下面的代碼將變量money當前值加上500後賦給它本身。創建money時初始值爲20000,因此money的值將變爲20500。

4-01.gif
圖1 加法運算符

下面的程序片段分別對money變量作減法、乘法和除法運算。要注意的是,對於整型變量,除法運算的計算結果只取整數部分。要想獲得小數的除法結果, 必須將變量定義爲浮點類型提示

1.money = money – 700;            // money的值爲 19800

2.money = money + money * 0.15f;  // money的值爲 22770

3.money = money / 2;             // money 的值爲 11385

求餘數的運算在計算機專業術語中叫求模。要獲得除法運算的餘數,可使用%運算符。例如,下面的語句取138除以25的餘數:

1.int weight_lost = 138 25;

4-02.gif
圖2 求模運算符

在同一條語句中還可以組合使用多個表達式,表達式本身可以作爲另一個表達的組成部分,如下例。

1.money = money + ( money * 3 );

在Java語言中還有一種簡寫形式的運算符,在進行算術運算的同時進行賦值操作,由一個算術運算符和一個賦值號構成,稱爲算術賦值運算符。包括:+=、-=、*=、 /=、%=。 這些運算符等價於先運算後賦值的形式。例如,爲了將4加到變量x,並將結果賦給x,可用x+=4,它等價於x=x+4。又如,x+=2-y等價於x=x+(2-y);x*=2-y等價於x=x*(2-y)

遞增和遞減運算符

除了上面提到的運算符號(+、-、*、/和%),Java語言中還有自增和自減兩個算術運算符(++、--)分別表示將變量自增加1,和自減少1。假設a是一個int類型變量,則表達式++a就等價於a = a + 1。“++”、“--”運算符的操作數必須是整型(byte,short,int,long)或浮點型(float,double)變量,它們對操作數執行加1或減1操作。 對“++”運算符和“--”運算符而言,都有兩個版本可供選用。“前遞增”表示“++”運算符位於變量的前面;“後遞增”表示“++”運算符位於變量的後面。類似地,“前遞減”意味着“--”運算符位於變量的前面;“後遞減”意味着“--”運算符位於變量的後面。對於前遞增和前遞減(如++a或--a),會先執行運算,再生成值;而對於後遞增和後遞減(如a++或a--),則先生成值,再執行運算。

遞增遞減運算符在後面的for循環語句中大量使用,採用這類運算符會使得代碼比較簡練,但是如果和別的運算符放在一起,最好用括號括起,以免造成閱讀的困難。例如:

1.c = a -(++b);

下面的程序片段中分別使用了前遞增和後遞增,gumballs的初始值均爲28,程序運行結束後gumballs的值均爲29。但是,我們查看打印結果,一條語句打印29,另一條語句打印28,是什麼原因呢?我們看看兩者的差異。

4-03.gif
圖1 兩種遞增運算符用法

根據上面的例子,我們可以得出:++、--在變量前先計算表達式值後增減,++、--在變量後先增減後計算表達式值

總結Java程序語言中的算術運算符如下表:

表1 算數運算符
算術運算符 名稱 實例
+ a+b
- a-b
* a*b
/ a/b
% 取模運算(計算餘數) a%b
++ 遞增 a++
-- 遞減 b--



下面的Java程序將計算並打印x和y的數值,其中有一段代碼不見了。

你的任務是找出下面所列出的程序段與相符的輸出,將相符的兩者聯起來。

01.class Mix{

02.public static void main(String[] args){

03.int x = 0;

04.int y = 30;

05.//缺代碼  

06.//缺代碼

07.y-= 2;

08.x = y + --x;

09.//打印x和y的值

10.System.out.print(x + “ ”+ y);   

11.}

12.}

 


答案 x=x+3 ---- 30 28; x++ ---- 28 28; y-- ----26 27; y=y*5+x ----147 148



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章