《《变数与运算子》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《变数与运算子》PPT课件.ppt(38页珍藏版)》请在三一办公上搜索。
1、變數與運算子,內 容 大 綱,變數型別運算子字串變數應用實例,變數(1/3),變數(variable)是程式語言中用以儲存資料的地方。在Java語言中,在使用變數之前,我們首先必須先針對將要使用的變數加以宣告(declare),以使得Java編譯器可以保留適當的記憶體空間以存放資料。變數的宣告包括給變數一個識別名稱(identification),並描述它存放資料的型別(type)。Example:型別 變數識別名稱;,變數(2/3),識別名稱的命名規則,在此,我們再將此規則整理如下:識別名稱是由一連串英文字母、數字、底線_及錢幣符號$所組成的。識別名稱不可由數字開頭。識別名稱不可包含空白字元
2、。識別名稱可以使用任何語言之字元,包括中文字元。保留字(reserved word)不可以作為識別名稱。,變數(3/3),變數識別名稱用來指出變數的名稱,而型別則是用以指出變數儲存資料的方式,Java語言有八種型別。,型別(1/6),Java語言一共有八種資料型別(type)byte、short、char、int、long、float、double、boolean,分別可以用以儲存及表示位元組整數、短整數、整數、長整數、浮點數、倍精準度浮點數、布林邏輯值、字元等表3-1一個變數在宣告時,必須指明是使用八種資料型別中的哪一種來存放資料的Example:int 變數1;/宣告用於儲存整數型別資料的
3、變數1 float 變數2;/宣告用於儲存浮點數型別資料的變數2 char 變數3;/宣告用於儲存字元型別資料的變數3,型別(2/6),有些Java語言的變數是用以儲存類別(class)資料的,它們又稱為樣例變數(instance variable)或是物件(object),此種變數的用法比一般型別變數的用法更為複雜表3-1說明,首先我們看到儲存方式欄位,我們發現byte,short,int及long型別都是使用2的補數(2s complement)表示法儲存資料float及double則利用IEEE 754之浮點數表示法儲存資料另外,每一個宣告之後都必須設定其初始值(initial valu
4、e)才可以使用,否則會出現以下之錯誤訊息:Example:Variable 變數 may not have been initialized.,型別(3/6),在Java語言中使用幾個特別的字母加在數字之後以代表不同的型別Example:在數字之後加上字母l或L代表long型別的數字,在數字之後加上字母f或F代表float型別的數字,而在數字之後加上字母d或D代表double型別的數字。Java語言還要設立一個數值後面加L、l、D、d、F與f的用法呢?以下的範例可以說明其原因:9223372036854775807L是正確的數值,而9223372036854775807是不正確的數值,型別(/
5、6),第二個數值因為最後沒有加上L,因此被當作int型別,但是int型別所能表示的最大範圍最大值僅為2147483647而已,第二個數值超過int型別所能儲存的數值範圍,因此是不正確的數值float型別及double型別上,0.0f與0.0d雖然值都是0,但是前者是用32bit浮點數表示的0,而後者是用64bit浮點數表示的0在Java語言中,除了在數字之後加上英文字母以區別其儲存型別之外,也可以在數字之前加上0、0 x或0X來表示不同的數字基底的寫法,型別(5/6),Example-分別為八進位、十六進位及十進位:八進位:若一個數值的開頭為0(零),則此數值是一個八進位數值,例如:0246表
6、示八進位數值246(oct)十六進位:若一個數值的開頭為0 x或0X,則此數值是一個十六進位數值,例如:0 xABCD表示十六進位數值ABCD(hex)十進位:若一個數值不以0、0 x或0X開頭,則此數值是一個十進位數值,例如:123456代表十進位數值123456(dec)char型別採用16位元Unicode編碼法來表示字元,型別(5/6),字元的用法必須使用配對的單引號()來表示,例如:A 代表字元 A,+代表字元+,文 代表字元 文。另外,有些字元無法由鍵盤上直接輸入,這些字元必須靠跳脫(escape)符號()來表示,用跳脫(escape)符號()表示的字元請見表3-2。以下我們介紹幾
7、個變數宣告的實例 int 變數1;/宣告屬於整數型別之變數1 int 變數2=123;/宣告屬於整數型別之變數2,並設定其初始值為123,型別(6/6),在Java語言中,等號(=)可以用以設定變數的初始值。我們也可以利用逗號(,)將許多變數在同一個敘述中一起宣告,其中並且可以同時進行初始值設定。如以下的例子:int 變數1,變數2=123,變數3,變數4;/宣告屬於整數型別之變數1、變數2、變數3及變數4/並同時設定變數2的初始值為123,運算子(1/4),Java語言有四十餘種運算子,在本章中,我們僅先介紹表3-3中與算術運算相關的一些運算子,其餘的運算子則留在後面的章節中再說明。在表3-
8、3中,我們分五組列出Java語言算術運算子,我們這樣做的原因是為了配合各運算子的運算優先順序(precedence),先列出的運算子其運算優先順序較高,而列在同一組的運算子則有相同的優先順序。例如,運算式 1+2*3 優先次序相同的運算則由左而右計算,這稱為運算的左結合的(left associative),有些優先次序相同的運算則由右而左計算,這稱為運算的右結合的(right associative)。,運算子(2/4),例如,我們較為熟悉的加、減、乘、除及模數(求餘數)運算就都是左結合的。Example:運算式 1+2*3%4結果:最終結果3刮號可以改變運算的優先順序,也就是說,不管運算子
9、優先順序為何,刮號中的運算式子一定會優先計算的。運算子+-*/%,分別代表加法,減法,乘法,除法及模式(求餘數)運算,這些運算可以運用於整數及浮點數上,唯一的不同是整數的運算結果是整數,而浮點數的運算結果是浮點數。,運算子(3/4),計算運算式時,Java語言會自動進行型別轉換。運算式中有浮點數及整數夾雜其中,則整數會自動轉換(cast)為浮點數之後才執行計算,且計算結果為浮點數。運算式中還有倍精準度浮點數,則所有數字更會被轉換為倍精準度浮點數之後才執行計算,且計算結果為倍精準度。Example:運算式 50/4 的值為整數12 運算式 50.0/4.0 及 50.0/4 及 50/4.0的值
10、均為倍精準度浮點數 12.5,運算子(4/4),若運算式中僅有整數類的型別(即byte、char、short及int型別),則所有數字會被轉換為整數之後才執行計算,且計算結果為整數型別。Java語言自動執行型別轉換之外,我們也可以使用型別轉換運算子(請參考表3-3)執行強迫型別轉換Example:運算式(int)50.3 及(int)50.01234567 及(int)50.98765的值均為屬於整數型別的50。例子,字串(1/3),我們要介紹一個用來處理字串的特別類別 String,注意String的第一個字是大寫的,這表示它是一個類別,而不是型別。String是Java語言中非常特別的類別
11、,它的用法有一點類似型別,例如,String類別可以用等號(=)來設定初始值,並且可以使用加號(+)來執行連結(concatenate)運算等一個字串是一個使用配對雙引號包圍起來的一連串的字元,例如,我們在第一章中看到的 歡迎來到Java世界 一個屬於String類別的變數可以使用等號(=)來設定初始值,例如:String 字串1=歡迎來到Java世界;,字串(2/3),String類別的變數亦可以使用加號(+)來執行連結(concatenation)運算,例如:String 字串1=歡迎來到;String 字串2=Java世界;String 字串3=字串1+字串2;字串在執行連結運算時會自動
12、將非字串類別的項目轉換為字串類別之後再執行連結運算,例如:int 整數=2001;String 字串=今年是公元+整數+年;,字串(2/3),字串既然是一連串的字元所組成的,因此所有字元都可以出現在字串中,例如:String 字串=“今年是t公元nt2001年nt!”;變數字串的初始值中即含t及n兩個特別字元若是使用System.out.print(字串);會在命令視窗中出現以下的結果:今年是 公元 2001年!,字串(3/3),因為t代表定位字元,會將列印的位置移動到後方定位點上,在Java語言中定位點是位於8的倍數的位置。另外,n代表換行字元,此字元會使字串換行列印這個方法(注意,此方法比
13、方法在末尾多了兩個字元ln,ln是line的縮寫)在印完括號中的字串參數之後,會將列印位置移到新的一行(下一行),因此,若緊接著有列印的動作,則列印會從新的一行開始。Example:System.out.print(歡迎來到nJavan世界);這個敘述與下列三個敘述同義:System.out.println(歡迎來到);System.out.println(Java);System.out.println(世界);執行結果,變數應用實例(1/2),以下我們以範例程式3-1來作為變數的運用實例,此範例程式檔名為計算.java,其程式碼如下所列:,變數應用實例(2/2),執行結果程式說明:,The
14、 END,表3-1,表3-2,表3-3,例子,計算口袋裡紅包的總金額:主程式裡宣告一個變數,並將之命名為總額,並將此變數的初始值為設為0=int 總額=0;拜年之後獲得1000元的紅包=總額=總額+1000;此行敘述會執行設定動作,因為+運算子的執行優先順序比=運算子高,此敘述會先計算等號右邊的加式,並將計算結果存入等號左邊的變數中。上列敘述也可以用敘述=總額+=1000;總額=總額-600;此敘述執行之後,變數總額的值會減去600上列敘述也可以用敘述=總額-=600;,例子,獲得3倍的彩金,總額=總額*3;總額*=3;保留原先身上現金總額的四分之一,總額=總額/4;總額/=4;總額=總額%6
15、9;此敘述中總額%69的意思是求變數總額之值除以69的餘數,這個值恰好可以是齊齊買完Kitty玩偶之後身上還剩餘的現金,等號代表要將總額%69的計算結果存回等號左邊的變數總額中。用一個敘述來將上述+*/%等五個運算一口氣都表示出來,總額=(總額+1000-600)*3/4%69;遞增及遞減運算子+及-的用法,+及-表示將變數的值往上遞增(加一)或往下遞減(減一),例子,另外,+與-出現在變數的前面與後面也會有不同的結果,例如,下列二個敘述的執行結果是不同的:總額=整數+*4=總額=整數*4;整數=整數+1;總額=+整數*4;=整數=整數+1;總額=整數*4;,執行結果,執行結果,程式說明,第4
16、行 4:import javax.swing.JOptionPane;為引進JOptionPane這個類別的敘述,swing類別庫是awt 類別庫的加強版(awt代表abstract window toolkit),自JDK 1.2以後即有提供。swing這個類別庫包括了許多圖形使用者介面(GUI,Graphical User Interface)要用到的類別及方法。例如,swing類別庫中的JOptionPane這個類別提供一些彈出對話方塊(pop up dialog box),可提示使用者輸入資料或顯示一些資訊給使用者看。第5行 5:public class 計算 為類別計算宣告的開始,其
17、中第5行與第24行的大括號配對代表第5行至24行之間為類別定義區塊。,程式說明,第6行 6:public static void main(String 參數)代表main方法定義的開始,其中第6行與第23行的大括號配對代表第6行與第23行之間為main方法的定義區塊。第10行 10:字串1=JOptionPane.showInputDialog(輸入第一個整數);呼叫JOptionPane類別的showInputDialog方法,此方法會彈出一個輸入對話方塊(dialog box),如下所示:,程式說明,使用者在此對話方塊中填入資料之後再接OK按鍵,則使用者填入的資料會以字串的方式隨著sho
18、wInputDialog方法傳回,因此,字串1中會存有使用者於輸入對話方塊中鍵入的字串。第12行 12:數1=Integer.parseInt(字串1);會將字串1的字串轉為相對的整數值,並存入變數數1。Integer是一個Java內建類別,屬於java.lang類別庫,java.lang這個類別庫裡有許多Java語言基本的類別,這些基本類別會自動引入每一個Java程式中,而不必再使用import敘述引入。Intger類別對應基本型別int注意,Intger類別的第一個字母為大寫,而int型別的第一個字母為小寫。,程式說明,第14至18行,則分別使用+,-,*,/及%等運算子執行變數數1與數2
19、的和、差、積、商及餘數的計算,其計算結果並存於和、差、積、商及餘等五個變數。第19行 19:String 顯示字串=數1+與+數2+之n和為+和+n差為+差+n積為+積+n商為+商+n餘為+餘;是一個變數顯示字串的定義,Java語言允許你在程式的任何地方進行變數的定義,只要你在使用變數之前定義變數就可以了,不必管這個定義出現在什麼地方。顯示字串的初值是一些字串的連結,其間包括由變數和、差、積、商及餘等轉成的字串及一些包括跳行字元n的字串。,程式說明,第20行 20:JOptionPane.showMessageDialog(null,顯示字串);呼叫JoptionPane類別的showMessageDialog方法,可以將剛剛定義的顯示字串變數的內容展現在訊息對話方塊上,如下圖:,程式說明,第21行 21:System.out.print(顯示字串);呼叫方法,可以將剛剛定義的顯示字串變數的內容顯示在命令視窗中,如下圖:,程式說明,第22行 22:System.exit(0);呼叫System類別的exit方法以結束程式執行,exit(0)方法中的參數0代表程式正常結束(一般非0之參數代表不正常結束)。所有使用圖形使用者介面(包括輸入對話框、顯示對話框等各種彈出式對話框)的程式都需要加入此行,以確保程式可以正確的結束執行。,