Java面向?qū)ο蟪绦蛟O(shè)計(jì)(Java基礎(chǔ)、Java規(guī)范)課件_第1頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(Java基礎(chǔ)、Java規(guī)范)課件_第2頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(Java基礎(chǔ)、Java規(guī)范)課件_第3頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(Java基礎(chǔ)、Java規(guī)范)課件_第4頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(Java基礎(chǔ)、Java規(guī)范)課件_第5頁(yè)
已閱讀5頁(yè),還剩117頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一章 初次接觸JAVA第1頁(yè),共122頁(yè)。主要內(nèi)容Java語(yǔ)言網(wǎng)絡(luò)時(shí)代的編程語(yǔ)言 Java語(yǔ)言的特點(diǎn) Java程序的編譯環(huán)境和執(zhí)行環(huán)境 第一個(gè)Java程序HelloWorld Java程序的分類 Java平臺(tái) 第2頁(yè),共122頁(yè)。Java語(yǔ)言網(wǎng)絡(luò)時(shí)代的編程語(yǔ)言第3頁(yè),共122頁(yè)。網(wǎng)絡(luò)時(shí)代編程問(wèn)題 網(wǎng)絡(luò)帶給我們精彩的同時(shí),也為編程帶來(lái)了困難,最為突 出的表現(xiàn)為環(huán)境復(fù)雜 第4頁(yè),共122頁(yè)。問(wèn)題的解決方法 為了實(shí)現(xiàn)一個(gè)程序能被多個(gè)操作系統(tǒng)所認(rèn)識(shí),必須像不同 語(yǔ)言國(guó)家的人交流那樣,借助“翻譯”的作用 我是中國(guó)人Im a chineseIm an american 我是美國(guó)人第5頁(yè),共122頁(yè)。 C

2、或C+:只有將編譯后的文件連接成為.exe,才能在Windows操作系統(tǒng)上運(yùn)行。C+的解決策略第6頁(yè),共122頁(yè)。Java的解決策略 :一次編譯,處處執(zhí)行 第7頁(yè),共122頁(yè)。Java語(yǔ)言的特點(diǎn)第8頁(yè),共122頁(yè)。A simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multi-threaded, and dynamic language。即:Java是一種具有“簡(jiǎn)單、面向?qū)ο?、分布式、解釋型、健壯、安全、與體系

3、結(jié)構(gòu)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)執(zhí)行”等特性的語(yǔ)言。Sun公司對(duì)Java的定義第9頁(yè),共122頁(yè)。Java程序的編譯環(huán)境和執(zhí)行環(huán)境第10頁(yè),共122頁(yè)。編譯環(huán)境:編譯環(huán)境的建立需要到Sun的官方網(wǎng)站上下載JDK(JavaDevelopmentKit),網(wǎng)址為:/downloads/ea/ 。Java源代碼從編譯到解釋執(zhí)行涉及兩種環(huán)境運(yùn)行環(huán)境:運(yùn)行環(huán)境需要到Sun的官方網(wǎng)站上下載JRE(JavaRuntimeEnvironment)第11頁(yè),共122頁(yè)。適用不同操作系統(tǒng)的JDK版本第12頁(yè),共122頁(yè)。第一個(gè)Java程序Hello World 第13頁(yè),共122頁(yè)。五個(gè)步 驟 進(jìn)行JDK的

4、安裝配置環(huán)境變量編寫程序編譯執(zhí)行程序??赡苡龅降膯?wèn)題及解決方法第14頁(yè),共122頁(yè)。Java程序的分類 第15頁(yè),共122頁(yè)。從大類上分為Application和Applet。前面的HelloWorld就是Application程序,它們之間的主要區(qū)別如下:ApplicationApplet 程序 標(biāo)志靜態(tài)main方法繼承java.applet.Applet,方法中為void paint(Graphics g) 運(yùn)行獨(dú)立運(yùn)行,利用java工具不能獨(dú)立運(yùn)行,需要依賴瀏覽器,用appletviewer工具來(lái)調(diào)試JAVA程序的分類第16頁(yè),共122頁(yè)。將HelloWorld改寫成Applet程序im

5、port java.awt.*;import java.applet.*;public class HelloWorldApplet extends Applet public void init() public void paint(Graphics g) g.drawString(Hello World!,25,25); 編輯html頁(yè)面,和HelloWorldApplet.class在同一目錄,取名為HelloWorldApplet .html,在其中編寫代碼:執(zhí)行結(jié)果:第17頁(yè),共122頁(yè)。程序說(shuō)明程序中的import,相當(dāng)于C語(yǔ)言中的include,是使用已經(jīng)編譯好的類的語(yǔ)法(包括

6、API中的類),在上面的程序當(dāng)中,如果沒(méi)有import java.awt.*;則Graphics類不可使用;沒(méi)有import java.applet.*;則Applet類不可使用。Graphics類用于繪圖。paint方法(名字不可更改)用于界面刷新第18頁(yè),共122頁(yè)。為什么Applet需要嵌入瀏覽器執(zhí)行Applet在瀏覽器中如何工作的?執(zhí)行中可能遇到的問(wèn)題第19頁(yè),共122頁(yè)。Java平臺(tái)第20頁(yè),共122頁(yè)。 Java不僅是編程語(yǔ)言,還是一個(gè)開(kāi)發(fā)平臺(tái)。 目前Sun公司把java平臺(tái)劃分成J2EE、J2SE、J2ME三 個(gè)平臺(tái),針對(duì)不同的市場(chǎng)目標(biāo)和設(shè)備進(jìn)行定位:J2EE是Java2 Ent

7、erprise Edition,主要是為企業(yè)計(jì)算提供一個(gè)應(yīng)用服務(wù)器的運(yùn)行和開(kāi)發(fā)平臺(tái)。J2EE將逐步發(fā)展成可與微軟的.NET相對(duì)抗的網(wǎng)絡(luò)計(jì)算平臺(tái)。J2SE是Java2 Standard Edition,主要目的是為臺(tái)式機(jī)和工作站提供一個(gè)開(kāi)發(fā)和運(yùn)行的平臺(tái)。我們?cè)趯W(xué)習(xí)java的過(guò)程中,主要是采用J2SE來(lái)進(jìn)行開(kāi)發(fā)。J2ME是Java2 Micro Edition,主要是面向電子產(chǎn)品提供一個(gè)java運(yùn)行平臺(tái),使java程序能夠在手機(jī)、機(jī)頂盒、PDA等產(chǎn)品上運(yùn)行。第21頁(yè),共122頁(yè)。第二章 Java語(yǔ)言基礎(chǔ)第22頁(yè),共122頁(yè)。主要內(nèi)容簡(jiǎn)單數(shù)據(jù)類型表達(dá)式 控制語(yǔ)句 數(shù)組第23頁(yè),共122頁(yè)。簡(jiǎn)單數(shù)據(jù)類

8、型第24頁(yè),共122頁(yè)。 標(biāo)識(shí)符定義:程序員對(duì)程序中的各個(gè)元素加以命名時(shí)使用的命名記號(hào)稱為標(biāo)識(shí)符(identifier)。Java語(yǔ)言中,標(biāo)識(shí)符是以字母,下劃線“_”,美元符“$”開(kāi)始的一個(gè)字符序列,后面可以跟字母,下劃線,美元符,數(shù)字。例如,identifier,userName,User_Name,_sys_val, $change為合法的標(biāo)識(shí)符,而2mail(數(shù)字開(kāi)頭)、 room#(非法字符)、class(關(guān)鍵字)、a-class(含有運(yùn)算符)都為非法的標(biāo)識(shí)符。第25頁(yè),共122頁(yè)。保留字概念:具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識(shí)符,這些標(biāo)識(shí)符稱為保留字,也稱為關(guān)鍵字。java中的

9、所有保留字(均用小寫字母表示):abstract,break,byte,boolean,catch,case,class,char,continue,default, double,do,else,extends,false,final,float,for,finally,if,import, implements,int,interface,instanceof,long,native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,th

10、row,throws,transient,volatile,void,while 。第26頁(yè),共122頁(yè)。數(shù)據(jù)類型劃分java中的數(shù)據(jù)類型:簡(jiǎn)單類型和復(fù)合類型:簡(jiǎn)單數(shù)據(jù)類型包括: 整數(shù)類型:byte, short, int, long 浮點(diǎn)類型:float,double 字符類型:char 布爾類型:boolean復(fù)合數(shù)據(jù)類型包括: class(類) interface(接口) 數(shù)組第27頁(yè),共122頁(yè)。常量和變量常量:用保留字final來(lái)實(shí)現(xiàn): final 類型 varName=value,varName=value; 如:final int NUM=100;變量:java 程序中的基本存儲(chǔ)

11、單元,它的定義包括變量名、 變量類型和作用域幾個(gè)部分。 格式如下:類型 varName=value,varName=value; 變量名稱區(qū)分大小寫。第28頁(yè),共122頁(yè)。變量的作用域變量的作用域指明可訪問(wèn)該變量的一段代碼,聲明一個(gè)變量的同時(shí)也就指明了變量的作用域。變量的作用域可分為:局部變量、類屬性變量、方法參數(shù)和例外處理參數(shù)。在一個(gè)確定的域中,變量名應(yīng)該是唯一的。第29頁(yè),共122頁(yè)。變量作用域舉例下面一段代碼因?yàn)槌^(guò)了定義的范圍而編譯出錯(cuò)。 for (int i=0;i高byte,short,char- int - long - float - double自動(dòng)類型轉(zhuǎn)換規(guī)則整型,實(shí)型,字

12、符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算,轉(zhuǎn)換從低級(jí)到高級(jí) 。第42頁(yè),共122頁(yè)。 例如 Type methodA(byte x, double y) return (short)x / y * 2; Type的類型將為double。操作數(shù)1類型操作數(shù)2類型轉(zhuǎn)換后的類型byte、short、charintintbyte、short、char、intlonglongbyte、short、char、int、longfloatfloatbyte、short、char、int、long、float doubledouble第43頁(yè),共122頁(yè)。數(shù)據(jù)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)

13、換強(qiáng)制類型轉(zhuǎn)換:高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),需用到強(qiáng)制類型轉(zhuǎn)換,如:int i;byte b=(byte)i; /*把int型變量i強(qiáng)制轉(zhuǎn)換為byte型*/第44頁(yè),共122頁(yè)。簡(jiǎn)單數(shù)據(jù)類型及其對(duì)應(yīng)包裝類簡(jiǎn)單數(shù)據(jù)類型不是類,但Java提供了與簡(jiǎn)單類型對(duì)應(yīng)的包裝類普通數(shù)據(jù)類型對(duì)應(yīng)的包裝類charCharacterbyteByteshortShortintIntegerlongLongfloat FloatdoubleDouble它們之間的相互轉(zhuǎn)化方法為(以int和Integer為例):簡(jiǎn)單數(shù)據(jù)類型轉(zhuǎn)化為類對(duì)象的方法是:通過(guò)相應(yīng)類的構(gòu)造方法來(lái)完成。如Integer vari = new Intege

14、r(5);類對(duì)象轉(zhuǎn)化為簡(jiǎn)單數(shù)據(jù)類型:如上面的vari可以通過(guò)調(diào)用intValue()方法得到普通數(shù)據(jù)類型的int值。第45頁(yè),共122頁(yè)。引入這些類的目的:簡(jiǎn)單數(shù)據(jù)類型不具有一些對(duì)象的特征,在一些場(chǎng)合不能使用,需要將簡(jiǎn)單數(shù)據(jù)類型轉(zhuǎn)為特定的類,進(jìn)行適當(dāng)處理后,再轉(zhuǎn)化回來(lái)。實(shí)現(xiàn)不同數(shù)據(jù)類型的轉(zhuǎn)化。這些類的靜態(tài)屬性中含有相應(yīng)的范圍。第46頁(yè),共122頁(yè)。表達(dá)式第47頁(yè),共122頁(yè)。表達(dá)式定義表達(dá)式是用運(yùn)算符把操作數(shù)連接起來(lái)的式子,可分為算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、條件表達(dá)式對(duì)各種類型的數(shù)據(jù)進(jìn)行加工的過(guò)程稱為運(yùn)算,表示各種不同運(yùn)算的符號(hào)稱為運(yùn)算符,參與運(yùn)算的數(shù)據(jù)稱為操作數(shù)按操作數(shù)的

15、數(shù)目來(lái)分,可有:一元運(yùn)算符:,(正數(shù)),(取負(fù))二元運(yùn)算符:, instanceof(對(duì)象運(yùn)算符) = 等三元運(yùn)算符:?:第48頁(yè),共122頁(yè)。算術(shù)表達(dá)式是由算術(shù)運(yùn)算符和位運(yùn)算符將操作數(shù)連接組成的表達(dá)式算符運(yùn)算舉例等效的運(yùn)算雙目運(yùn)算符+加法a+b-減法a-b*乘法a*b/除法a/b%取余數(shù)a%b單目運(yùn)算符+自增1a+或 +aa=a+1-自減1a4a=a-1-取反-aa=-a第49頁(yè),共122頁(yè)。算術(shù)運(yùn)算符優(yōu)先級(jí)順序分組操作符規(guī)則高低子表達(dá)式()若有多重括號(hào),首先計(jì)算最里面的子表達(dá)式的值。若同一級(jí)有多對(duì)括號(hào),則從左到右計(jì)算。單目操作符+,-求單目變量自增自減值。乘法操作符*,/,%若一個(gè)表達(dá)式中

16、有多個(gè)乘法操作符,那么從左到右計(jì)算。加法操作符 +,- 若一個(gè)表達(dá)式中有多個(gè)加法操作符,那么從左到右計(jì)算 第50頁(yè),共122頁(yè)。算術(shù)表達(dá)式注意兩個(gè)整數(shù)類型的數(shù)據(jù)做除法時(shí),結(jié)果只保留整數(shù)部分。整數(shù)和浮點(diǎn)數(shù)都能進(jìn)行取余運(yùn)算?!?”運(yùn)算符,當(dāng)都為整數(shù)時(shí),結(jié)果為整數(shù),有一個(gè)為浮點(diǎn),則為浮點(diǎn)數(shù)。自增/自減運(yùn)算符只適用于變量,且位于運(yùn)算符的哪一側(cè)有不同效果。Java中的算術(shù)運(yùn)算主要依賴于Math類的靜態(tài)方法,例如:取絕對(duì)值:Math.abs(Type i),Type可以為int、long、float、double對(duì)數(shù)取三角和反三角函數(shù)、對(duì)數(shù)和指數(shù)、乘方、開(kāi)方求兩個(gè)數(shù)的最大最小值 得到隨機(jī)數(shù)(random(

17、),類型為double)對(duì)浮點(diǎn)數(shù)進(jìn)行處理:四舍五入(round)、ceil(取大值)、floor(取小值)第51頁(yè),共122頁(yè)。class TestNumber public static void main(String args) System.out.print(Math.ceil(5.2)+ ); System.out.print(Math.ceil(5.6)+ ); System.out.print(Math.ceil(-5.2)+ ); System.out.print(Math.ceil(-5.6)+ ); System.out.print(Math.floor(5.2)+ );

18、 System.out.print(Math.floor(5.6)+ ); System.out.print(Math.floor(-5.2)+ ); System.out.print(Math.floor(-5.6)+ ); System.out.print(Math.round(5.2)+ ); System.out.print(Math.round(5.6)+ ); System.out.print(Math.round(-5.2)+ ); System.out.print(Math.round(-5.6)+ ); 輸出結(jié)果是:第52頁(yè),共122頁(yè)。例 :韓信點(diǎn)兵不足百人,三人一行多一個(gè)

19、,七人一行少兩個(gè),五人一行正好,問(wèn)有多少人。public class TestSoldierypublic static void main(String args) for (int i=1;i大于xyflase小于x=大于等于x=yflase=小于等于x=ytrue第54頁(yè),共122頁(yè)。判斷某年是否為閏年(如果是閏年,它應(yīng)能被4整除,但不能被100整除,或被100整除,也能被400整除)public class TestLeapYear public static void isLeapYear(int year)boolean n1 = (year%4=0);boolean n2 = (

20、year%100=0);boolean n3 = (year%400=0);if (n1=true&n2!=true)|(n2=true&n3=true) System.out.println(year+年是閏年); else System.out.println(year+年不是閏年); public static void main(String args) isLeapYear(1900); isLeapYear(1904); isLeapYear(2000);第55頁(yè),共122頁(yè)。邏輯表達(dá)式利用邏輯運(yùn)算符將操作數(shù)連接的式子稱為邏輯表達(dá)式邏輯表達(dá)式參與運(yùn)算的都是布爾值,結(jié)果也是布爾值算符

21、運(yùn)算舉例運(yùn)算規(guī)則&與x&yx,y都為true時(shí),結(jié)果為true|或x|yx,y都為false時(shí),結(jié)果為false!非!xx為true時(shí),結(jié)果為false,x為false時(shí),結(jié)果為true異或xyx,y都為true或都為false時(shí),結(jié)果為false&條件與x&yx,y都為true時(shí),結(jié)果為true|條件或x|yx,y都為false時(shí),結(jié)果為false第56頁(yè),共122頁(yè)。邏輯表達(dá)式注意“&”和“|”在執(zhí)行操作時(shí),運(yùn)算符左右兩邊的表達(dá)式首先被運(yùn)算執(zhí)行,再對(duì)兩表達(dá)式的結(jié)果進(jìn)行與、或運(yùn)算。而利用“&”和“|”執(zhí)行操作時(shí),如果從左邊的表達(dá)式中得到操作數(shù)能確定運(yùn)算結(jié)果,則不再對(duì)右邊的表達(dá)式進(jìn)行運(yùn)算。采用

22、“&”和“|”的目的是為了加快運(yùn)算速度,但也要防止用法上出現(xiàn)的問(wèn)題,如:class Test public static void main(String args) int out =10; boolean b1=false;if (b1=true)&(out+=10)=20)System.out.println(相等,out=+out); else System.out.println(不等,out=+out); out結(jié)果為10,如將語(yǔ)句改為if (b1=true)&(out+=10)=20) 則out結(jié)果為20第57頁(yè),共122頁(yè)。賦值表達(dá)式賦值運(yùn)算符組成的表達(dá)式稱為賦值表達(dá)式。Jav

23、a語(yǔ)言中,賦值運(yùn)算符是“=”。賦值運(yùn)算符的作用是將賦值運(yùn)算符右邊的一個(gè)數(shù)據(jù)或一個(gè)表達(dá)式的值賦給賦值運(yùn)算符左邊的一個(gè)變量。注意賦值號(hào)左邊必須是變量(即沒(méi)有final修飾的變量)。賦值運(yùn)算的另一種形式是復(fù)合賦值運(yùn)算符連接起來(lái)的表達(dá)式。第58頁(yè),共122頁(yè)。復(fù)合賦值運(yùn)算符 舉例 等效于 復(fù)合賦值運(yùn)算符 舉例 等效于 += x+=y x=x+y -+ x-=y x=x-y *= x*=y x=x*y /= x/=y x=x/y %= x%=y x=x%y = x=y x=xy &= x&=y x=x&y |= x|=y x=x|y = x=y x=x= x=y x=xy = x=y x=xy 賦值表達(dá)

24、式各種復(fù)合賦值運(yùn)算符第59頁(yè),共122頁(yè)。各種位運(yùn)算符運(yùn)算符運(yùn)算舉例運(yùn)算規(guī)則(設(shè)x=11010110,y=01011001,n=2)運(yùn)算結(jié)果 位反 x 將x按比特位取反 00101001 & 位與 x&y x,y按位進(jìn)行與操作 01010000 | 位或 x|y x,y按位進(jìn)行或操作 11011111 位異或 xy x,y按位進(jìn)行異或操作 10001111 左移 x 右移 xn x各比特位右移n位,左邊按符號(hào)位補(bǔ)0或1 11110101 不帶符號(hào)的右移 xn x各比特位右移n位,左邊的空位一律填零 00110101 無(wú)符號(hào)的左移相當(dāng)于乘2n,右移相當(dāng)于除2nint i = 0 xFFFFFFF

25、1; int j = i; /最高位取反后為正,j值為146 3的結(jié)果為5第60頁(yè),共122頁(yè)。條件表達(dá)式形式:布爾表達(dá)式1?表達(dá)式2 :表達(dá)式 表達(dá)式2和表達(dá)式3的類型必須相同。條件運(yùn)算符的執(zhí)行順序是:先求解表達(dá)式1,若值為true則執(zhí)行表達(dá)式2,此時(shí)表達(dá)式2的值作為整個(gè)條件表達(dá)式的值,否則求解表達(dá)式3,將表達(dá)式3的值作為整個(gè)條件表達(dá)式的值。在實(shí)際應(yīng)用中,常常將條件運(yùn)算符與賦值運(yùn)算符結(jié)合起來(lái),構(gòu)成賦值表達(dá)式,以替代比較簡(jiǎn)單的if/else語(yǔ)句。 條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,結(jié)合方式為“自右自左”。 第61頁(yè),共122頁(yè)。class Test public static void mai

26、n(String args) float sum=1.5f; int num=2;System.out.println(sum2 ? 1 : num/sum); 程序返回結(jié)果是1.0,而不是1,因?yàn)閟um是浮點(diǎn)數(shù),所以表達(dá)式2發(fā)生了數(shù)據(jù)的隱式轉(zhuǎn)化。但是下面的程序則返回1,因?yàn)閚um/sum仍然是整數(shù),所以表達(dá)式2的類型保持不變。條件表達(dá)式舉例class Test public static void main(String args) int num=3,sum=2;System.out.println(sum3 ? 1 : num/sum); 第62頁(yè),共122頁(yè)。運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先

27、級(jí)決定了表達(dá)式中不同運(yùn)算執(zhí)行的先后次序。優(yōu)先級(jí)高的先進(jìn)行運(yùn)算,優(yōu)先級(jí)低的后進(jìn)行運(yùn)算。在優(yōu)先級(jí)相同的情況下,由結(jié)合性決定運(yùn)算順序。最基本的規(guī)律是:域和分組運(yùn)算優(yōu)先級(jí)最高,接下來(lái)依次是單目運(yùn)算,雙目運(yùn)算,三目運(yùn)算,賦值運(yùn)算的優(yōu)先級(jí)最低。第63頁(yè),共122頁(yè)。算符 描述 優(yōu)先級(jí) 結(jié)合性 . () 域運(yùn)算,數(shù)組下標(biāo),分組括號(hào) 1 最高 自左至右 + - - ! 單目運(yùn)算 2 單目 右/左 new (type) 分配空間,強(qiáng)制類型轉(zhuǎn)換 3 自右至左 * / % 算術(shù)乘、除、求余運(yùn)算 4 雙目 自左至右(左結(jié)合性) + - 算術(shù)加減運(yùn)算 5 位運(yùn)算 6 = 小于/小于等于/大于/大于等于 7 = != 相

28、等,不等 8 & 按位與 9 按位異或 10 | 按位或 11 & 邏輯與 12 | 邏輯或 13 ?: 條件運(yùn)算符 14 三目 自右至左(右結(jié)合性) =*=/=%=+= -= &= = |= 賦值運(yùn)算 15 賦值最低 第64頁(yè),共122頁(yè)??刂普Z(yǔ)句第65頁(yè),共122頁(yè)??刂普Z(yǔ)句Java程序通過(guò)控制語(yǔ)句來(lái)執(zhí)行程序流,完成一定的任務(wù)。Java中的控制語(yǔ)句有以下幾類:分支語(yǔ)句:if-else, switch循環(huán)語(yǔ)句:while, do-while, for與程序轉(zhuǎn)移有關(guān)的跳轉(zhuǎn)語(yǔ)句:break, continue, return例外處理語(yǔ)句:try-catch-finally, throw注釋語(yǔ)句:

29、/,/* */, /* */ 第66頁(yè),共122頁(yè)。分支語(yǔ)句條件語(yǔ)句 if-else if(boolean-expression)statement1; else statement2;if括號(hào)中的結(jié)果應(yīng)該為布爾值,否則編譯不會(huì)通過(guò),例如如果x與y是int類型,x=y是賦值語(yǔ)句,其結(jié)果不是布爾值,不能充當(dāng)布爾表達(dá)式;如果它們的類型本身為boolean,則x=y可以充當(dāng)if中的條件。養(yǎng)成if后面無(wú)論是一句還是多句代碼,都寫的習(xí)慣第67頁(yè),共122頁(yè)。分支語(yǔ)句舉例 public class Test public static void main(String args) int x,y; x=7

30、;y=1; if(x6) if(y6) System.out.println(設(shè)備正常); else System.out.println(“設(shè)備出錯(cuò)”); if(x6) if(y6) System.out.println(設(shè)備正常); else System.out.println(設(shè)備出錯(cuò)); 等價(jià)第68頁(yè),共122頁(yè)。分支語(yǔ)句多分支語(yǔ)句 switch switch (expression)case value1 : statement1;break;case value2 : statement2;break;case valueN : statemendN;break;default

31、: defaultStatement; 第69頁(yè),共122頁(yè)。多分支語(yǔ)句注意表達(dá)式expression的返回值類型必須是這幾種類型之一:byte,short ,int, char請(qǐng)注意是普通數(shù)據(jù)類型,而不是包裝類,如Short、Byte等,也不能是long、float或double。case子句中的值valueN必須是常量,而且所有case子句中的值應(yīng)是不同的。default子句是可選的。break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后,使程序跳出switch語(yǔ)句,即終止switch語(yǔ)句的執(zhí)行(在一些特殊情況下,多個(gè)不同的case值要執(zhí)行一組相同的操作,這時(shí)可以不用break)。第70頁(yè),共122

32、頁(yè)。循環(huán)語(yǔ)句 Java語(yǔ)言中提供的循環(huán)語(yǔ)句有: while語(yǔ)句、do-while語(yǔ)句、for語(yǔ)句。 while語(yǔ)句 初始化 while (條件表達(dá)式)循環(huán)體 循環(huán)變量控制 條件表達(dá)式循環(huán)體真假第71頁(yè),共122頁(yè)。do-while語(yǔ)句初始化 do 循環(huán)體 循環(huán)變量控制 while (條件表達(dá)式) 注意:條件表達(dá)式中的結(jié)果應(yīng)為布爾值,而不能為算術(shù)值。 例如while (y-) x-;條件表達(dá)式循環(huán)體真假第72頁(yè),共122頁(yè)。for語(yǔ)句 for(表達(dá)式1(初始條件);表達(dá)式2( 結(jié)束條件); 表達(dá)式3(循環(huán)變量控制)) 循環(huán)體 其流程邏輯關(guān)系如圖所示表達(dá)式2循環(huán)體真假表達(dá)式1表達(dá)式3第73頁(yè),共1

33、22頁(yè)。循環(huán)語(yǔ)句注意for語(yǔ)句執(zhí)行時(shí),首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語(yǔ)句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。初始化、終止以及迭代部分都可以為空語(yǔ)句(但分號(hào)不能省),三者均為空的時(shí)候,相當(dāng)于一個(gè)無(wú)限循環(huán)。在初始化部分和迭代部分可以使用逗號(hào)語(yǔ)句,來(lái)進(jìn)行多個(gè)操作。逗號(hào)語(yǔ)句是用逗號(hào)分隔的語(yǔ)句序列。如果循環(huán)變量在for中定義,變量的作用范圍僅限于循環(huán)體內(nèi)第74頁(yè),共122頁(yè)。public class Delta static boolean foo(char c) System.out.print(c); return true; public

34、 static void main( String argv ) int i =0; for ( foo(A); foo(B)&(i2); foo(C) i+ ; foo(D); 結(jié)果輸出為:ABDCBDCB循環(huán)語(yǔ)句舉例1第75頁(yè),共122頁(yè)。例百雞問(wèn)題,公雞5元/只,母雞3元/只,小雞3只/元,問(wèn)100圓買100只雞,公雞、母雞、小雞各多少(采用窮舉法公雞最多20只,母雞33只)public class HandreadChicken public static void main(String args) int z=0;boolean isAnswer=false; for (int i

35、=1;i=20 ;i+ ) for (int j=1;j=33 ;j+ ) z = 100-i-j; if (z%3=0&(5*i+3*j+z/3=100) System.out.println(公雞+i+只,母雞+j+只,小雞+z+只); isAnswer = true; if (!isAnswer) System.out.println(本題無(wú)解); 循環(huán)語(yǔ)句舉例2第76頁(yè),共122頁(yè)。跳轉(zhuǎn)語(yǔ)句Java語(yǔ)言提供了4種轉(zhuǎn)移語(yǔ)句:break,continue,return和throw。轉(zhuǎn)移語(yǔ)句的功能是改變程序的執(zhí)行流程。break語(yǔ)句可以獨(dú)立使用,而continue語(yǔ)句只能用在循環(huán)結(jié)構(gòu)的循環(huán)體

36、中。第77頁(yè),共122頁(yè)。 break語(yǔ)句 break語(yǔ)句通常有下述不帶標(biāo)號(hào)和帶標(biāo)號(hào)的兩種形式:break;break Lab;其中:break是關(guān)鍵字;Lab是用戶定義的標(biāo)號(hào)。break語(yǔ)句用在switch語(yǔ)句中,其作用是強(qiáng)制退出switch結(jié)構(gòu),執(zhí)行switch結(jié)構(gòu)后的語(yǔ)句。break語(yǔ)句用在單層循環(huán)結(jié)構(gòu)的循環(huán)體中,其作用是強(qiáng)制退出循環(huán)結(jié)構(gòu)。若程序中有內(nèi)外兩重循環(huán),而break語(yǔ)句寫在內(nèi)循環(huán)中,則執(zhí)行break語(yǔ)句只能退出內(nèi)循環(huán)。break lab語(yǔ)句用在循環(huán)語(yǔ)句中,必須在外循環(huán)入口語(yǔ)句的前方寫上lab標(biāo)號(hào),可以使程序流程退出標(biāo)號(hào)所指明的外循環(huán)。第78頁(yè),共122頁(yè)。編程打印1到100中的

37、所有素?cái)?shù)public class Test public static void main(String args) int n=0,m,j,i; for (i=3;i=100;i+=2 ) m = (int)Math.sqrt(i); for (j=2;j=m+1) if (n%6=0) System.out.println(); System.out.print(i+ ); n+; /end for /end main/end class break語(yǔ)句舉例第79頁(yè),共122頁(yè)。continue語(yǔ)句 continue語(yǔ)句只能用于循環(huán)結(jié)構(gòu)中,其作用是使循環(huán)短路。 它有下述兩種形式: cont

38、inue; 或 continue lab; 其中:continue是關(guān)鍵字;Lab為標(biāo)號(hào)。 continue語(yǔ)句也稱為循環(huán)的短路語(yǔ)句。用在循環(huán)結(jié)構(gòu)中,使程序執(zhí)行到continue語(yǔ)句時(shí)回到循環(huán)的入口處,執(zhí)行下一次循環(huán),而使循環(huán)體內(nèi)寫在continue語(yǔ)句后的語(yǔ)句不執(zhí)行。當(dāng)程序中有嵌套的多層循環(huán)時(shí),為從內(nèi)循環(huán)跳到外循環(huán),可使用帶標(biāo)號(hào)的continue lab語(yǔ)句。此時(shí)應(yīng)在外循環(huán)的入口語(yǔ)句前方加上標(biāo)號(hào)。第80頁(yè),共122頁(yè)。返回語(yǔ)句returnreturn語(yǔ)句從當(dāng)前方法中退出,返回到調(diào)用該方法的語(yǔ)句處,并從緊跟該語(yǔ)句的下一條語(yǔ)句繼續(xù)程序的執(zhí)行。返回語(yǔ)句有兩種格式:return expression

39、 ;return; return語(yǔ)句通常用在一個(gè)方法體的最后,否則會(huì)產(chǎn)生編 譯錯(cuò)誤,除非用在if-else語(yǔ)句中。第81頁(yè),共122頁(yè)。class TestReturn public static void main(String args) int i = 10; if (i5) return ; /i = 6; else /return; i = 5; 注意:上例中的去掉任意一句注釋,都將產(chǎn)生編譯錯(cuò)誤。 return語(yǔ)句舉例第82頁(yè),共122頁(yè)。數(shù)組第83頁(yè),共122頁(yè)。數(shù)組的概念數(shù)組名是符合Java標(biāo)識(shí)符定義規(guī)則的用戶自定義標(biāo)識(shí)符; 數(shù)組的維數(shù)用方括號(hào)“ ”的個(gè)數(shù)來(lái)確定,對(duì)于一維數(shù)組來(lái)說(shuō)

40、,只需要一對(duì)方括號(hào),二維就是;數(shù)組元素的數(shù)據(jù)類型可以是Java的任何數(shù)據(jù)類型,例如:基本類型(int、float、double、char等),類(class)或接口(interface)等。聲明數(shù)組就是要確定數(shù)組名、維數(shù)和元素的數(shù)據(jù)類型第84頁(yè),共122頁(yè)。類型標(biāo)識(shí)符 數(shù)組名;類型標(biāo)識(shí)符 數(shù)組名;例如: int abc; String example; myClass mc ; 注:Java中的數(shù)組可以看作是一個(gè)對(duì)象。例如上面的聲明 如果進(jìn)行了初始化,則看作兩個(gè)對(duì)象,分別為abc和example,它們有自己的屬性,如length屬性。一維數(shù)組的聲明格式第85頁(yè),共122頁(yè)。使用關(guān)鍵字new可將

41、數(shù)組看成一個(gè)特殊對(duì)象 格式如下:類型標(biāo)識(shí)符 數(shù)組名=new 類型標(biāo)識(shí)符數(shù)組長(zhǎng)度;類型標(biāo)識(shí)符 數(shù)組名=new 類型標(biāo)識(shí)符數(shù)組長(zhǎng)度;一維數(shù)組三種初始化方法之一第86頁(yè),共122頁(yè)。產(chǎn)生一個(gè)有10個(gè)單元,類型為int的數(shù)組對(duì)象,所有單元的初值為0, abc = new int10; 產(chǎn)生一個(gè)具有10個(gè)單元,類型為String的數(shù)組對(duì)象,所有單元的初值為null,不要寫成 new String(10) ,example = new String10; 產(chǎn)生一個(gè)類型為myClass容納10個(gè)myClass對(duì)象引用的數(shù)組對(duì)象,每個(gè)單元值是null,mc = new myClass10; 一維數(shù)組初始化例子

42、注:1)不是產(chǎn)生10個(gè)myClass對(duì)象; 2)對(duì)象數(shù)組化的目的在于可以進(jìn)行對(duì)象的遍歷控制。 3)數(shù)組產(chǎn)生后的默認(rèn)值同對(duì)象屬性初始化默認(rèn)值規(guī)定。第87頁(yè),共122頁(yè)。直接在聲明的時(shí)候進(jìn)行定義及初始化,例如: String s=ab,bc,cd; int a = 3,4,5,6 對(duì)于對(duì)象數(shù)組: Integer results = new Integer(3), new Integer(5), new Integer(8); String dogs = new String(“Fido”),new String(“Spike”),new String(“Aiko”);一維數(shù)組三種初始化方法之二注:

43、這種初始化方法只能寫在聲明代碼中(“”內(nèi)用 , 號(hào)分隔),下面的寫法是錯(cuò)誤的:int a ; a= 3,4,5,6;第88頁(yè),共122頁(yè)。 采用1和2相結(jié)合方式進(jìn)行初始化,例如: float f4 = new float 1.0f, 2.0f, 3.0f; float f4 ; f4= new float 1.0f, 2.0f, 3.0f; 注:此時(shí)float中的 不應(yīng)該給出具體數(shù)字一維數(shù)組三種初始化方法之三第89頁(yè),共122頁(yè)。 將數(shù)組整體看成一個(gè)對(duì)象,通過(guò)數(shù)組引用進(jìn)行相應(yīng)的操作: float fl, f2; /f1和f2就是數(shù)組聲明 fl = new float10; /f1變?yōu)橐?f2

44、 = f1; /引用賦值,f2和f1擁有相同的數(shù)組成員。 Object o = f1 /這樣賦值也成立 Java中數(shù)組的下標(biāo)從0開(kāi)始,如果數(shù)組越界,產(chǎn)生的異常為:IndexOutOfBoundsException (它繼承RuntimeException) 若定義數(shù)組大小為負(fù)數(shù)會(huì)產(chǎn)生NgativeArraySizeException(它繼承RuntimeException),但是數(shù)組長(zhǎng)度可以為0(不是null)數(shù)組引用第90頁(yè),共122頁(yè)。public class test public static void main(String args) for (int i=0;iargs.leng

45、th ;i+ ) System.out.println(argsi); 一個(gè)特殊的一維數(shù)組上圖中的10 20 30 40 50 60 分別存入args數(shù)組當(dāng)中,系統(tǒng)自動(dòng)為args申請(qǐng)了6個(gè)單元。如果運(yùn)行時(shí)僅有java test ,此時(shí)args相當(dāng)于args = new String0; 第91頁(yè),共122頁(yè)。 某些類的方法返回?cái)?shù)組對(duì)象引用: 例如:linkedList、Vector對(duì)象可以調(diào)用方法toArray()返回 Object數(shù)組,此時(shí)數(shù)組中為對(duì)象的引用,不是對(duì)象。 Arrays. sort方法:對(duì)char,byte,short,int,float,double,long按升 序排列,也

46、可指定排序方法對(duì)對(duì)象進(jìn)行排序(見(jiàn)JDK文檔)。 System.arraycopy()復(fù)制數(shù)組 public static void arraycopy( Object src, int srcPos, /源數(shù)組,起始下標(biāo)位置 Object dest,int destPos, /目的數(shù)組,起始下標(biāo)位 int length) /拷貝長(zhǎng)度一維數(shù)組的相關(guān)方法第92頁(yè),共122頁(yè)。源數(shù)組和目的數(shù)組類型必須一致。如果是基本數(shù)據(jù)類型數(shù)組,則是值拷貝;如果是對(duì)象數(shù)組,則是引用拷貝。若src或dest其中一個(gè)為null,則會(huì)發(fā)生發(fā)生空指針異常NullPointerException;如果src和dest的類型不

47、一致,則會(huì)發(fā)生ArrayStoreException;若srcPos+length大于src.length、destPos+length大于dest.length,則會(huì)發(fā)生 IndexOutOfBoundsException。異常發(fā)生時(shí),dest中的內(nèi)容不會(huì)變化。System.arraycopy()方法使用注意第93頁(yè),共122頁(yè)。兩個(gè)字符數(shù)組進(jìn)行比較(大小寫忽略)1.若相等,返回0;2.若不等,按第一個(gè)不等的字符大小進(jìn)行比較,返回1或-1;3.兩個(gè)字符數(shù)組不等直接返回-2 import java.io.*;public class ContrastChar public static int

48、 constrast(char a,char b)char c1=u0000,c2=u0000; int k1=0,k2=0,i=0;k1 = a.length;k2=b.length;if (k1!=k2)return -2;一維數(shù)組舉例第94頁(yè),共122頁(yè)。for (i=0;i=A & c1=A & c2c2) return 1;elsereturn -1; /end method public static void main(String args) char s1=new char10; s10=a; s11=b; char s2=new char10; s20=a; s21=i;

49、System.out.println(constrast(s1,s2); 第95頁(yè),共122頁(yè)。二維數(shù)組的聲明格式類型說(shuō)明符 數(shù)組名 ; 類型說(shuō)明符 數(shù)組名; 例如: int arr ; int arr;第96頁(yè),共122頁(yè)。使用關(guān)鍵字new 格式如下:數(shù)組名=new 類型說(shuō)明符數(shù)組長(zhǎng)度 ; 數(shù)組名=new 類型說(shuō)明符數(shù)組長(zhǎng)度 數(shù)組長(zhǎng)度; 其中:對(duì)數(shù)組名、類型說(shuō)明符和數(shù)組長(zhǎng)度的要求與一 維數(shù)組一致。對(duì)于沒(méi)有初始化的維度,其值為null。二維數(shù)組二種初始化方法之一第97頁(yè),共122頁(yè)。 int arra; arra=new int34; 等價(jià)于: arra=new int3; 創(chuàng)建有3個(gè)元素的數(shù)

50、組,各元素也是一個(gè)數(shù)組 arra0=new int4;創(chuàng)建arra0元素的數(shù)組,它有4個(gè)元素 arra1=new int4;創(chuàng)建arra1元素的數(shù)組,它有4個(gè)元素 arra2=new int4;創(chuàng)建arra2元素的數(shù)組,它有4個(gè)元素 也等價(jià)于: arra=new int3 for(int i=0;i3;i+) arrai=new int4;二維數(shù)組初始化例子第98頁(yè),共122頁(yè)。arra0arra1arra2arra00arra01arra02arra03arra10arra11arra12arra13arra20arra21arra22arra23arra二 維 數(shù) 組第99頁(yè),共122頁(yè)。

51、是用指定的初值對(duì)數(shù)組初始化,例如: int arr1=3,-9,6,8,0,1,11,9,8 它等價(jià)于: int arr1=new int3; arr10=new int3,-9; arr11= new int8,0,1; arr12= new int10,11,9,8;二維數(shù)組二種初始化方法之二 也等價(jià)于: int arr1=new int3; int arb1=3,-9; int arb2=8,0,1; int arb3=10,11,9,8; arr10=arb1; arr11=arb2; arr12=arb3;第100頁(yè),共122頁(yè)。注:對(duì)于二維數(shù)組,當(dāng)只定義第一維維數(shù)時(shí),另一維的維數(shù)可

52、以不一樣,也就是說(shuō)不一定是規(guī)則的矩陣形式,例如: int arra; arra =new int3; arra0=new int3; arra1=new int2; arra2=new int1; arra0arra1arra2arra00arra01arra02arra10arra11arra20arra第101頁(yè),共122頁(yè)。 編程打印如下圖形,打印到8 . 3 3 3 3 3 3 3 . . 3 2 2 2 2 2 3 . . 3 2 1 1 1 2 3 . . 3 2 1 0 1 2 3 . . 3 2 1 1 1 2 3 . . 3 2 2 2 2 2 3 . . 3 3 3 3 3

53、 3 3 . 分析:將數(shù)放置到數(shù)組當(dāng)中;將數(shù)組中的數(shù)打印出來(lái);程序見(jiàn)下頁(yè)。二維數(shù)組應(yīng)用舉例1第102頁(yè),共122頁(yè)。public class Test public static void main (String args) final int num=8; int t= new int2*num+12*num+1; for (int i=0;i=num;i+) for (int j=0;j=num; j+) if(ij) tij= num - i; else tij= num - j; ti2*num-j = tij; t2*num-ij = tij; t2*num-i2*num-j =t

54、ij; for (int i=0;i2*num+1;i+) for (int j=0;j2*num+1; j+ ) System.out.print(tij); System.out.println(“ ); 第103頁(yè),共122頁(yè)。二維數(shù)組應(yīng)用舉例2舉例編程打印數(shù)字斜塔1 3 6 10 15 2 5 9 14 4 8 137 12 11第104頁(yè),共122頁(yè)。public class Test public static void main(String args) final int num=5; int t= new intnumnum; for (int i=0;inum;i+) fo

55、r (int j=0;jnum; j+) if (i=0&j=0) tij=1; else if(j=0) tij=ti-1j+i; else if (i=0) tij=tij-1+j+1; else if (jnum-i) tij=ti-1j+i+j; for (int i=0;inum;i+) for (int j=0;jnum; j+ ) if (jnum-i) System.out.print(tij+ ); System.out.println(); /end main/end class第105頁(yè),共122頁(yè)。數(shù)組對(duì)象特點(diǎn)及常用方法具有對(duì)象引用的特點(diǎn),例如: public clas

56、s Test public static void printArray(String arg) for (int i= 0;iarg.length ;i+ ) System.out.println(argi); public static void main(String args) printArray(args); 第106頁(yè),共122頁(yè)。數(shù)組長(zhǎng)度length屬性對(duì)于一維數(shù)組,數(shù)組名.length可以得到數(shù)組單元的個(gè)數(shù)對(duì)于二維數(shù)組,數(shù)組名.length得到的是“行數(shù)”,而要測(cè)出列數(shù),則需要數(shù)組名i.length,如果所有行的列數(shù)都相等,則為總體的列數(shù)。根據(jù)上面可以推而廣之,數(shù)組名.length可以得到第一維 數(shù),數(shù)組名i.length,得到某維特定點(diǎn)的另一個(gè)維度,依 次類推。第107頁(yè),共122頁(yè)。 矩陣轉(zhuǎn)置public class Test public static void transpose(int m) if (m=null) return;int temp;for (int i=0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論