語言程序設(shè)計(jì)教案_第1頁
語言程序設(shè)計(jì)教案_第2頁
語言程序設(shè)計(jì)教案_第3頁
語言程序設(shè)計(jì)教案_第4頁
語言程序設(shè)計(jì)教案_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、這樣:沒講;這樣:有待增加Java 語言教案(javahc :javajava )(本教案參考 10 年上課教案修改而成)erjiao916123456很高興,大家和我一起學(xué)習(xí)一種現(xiàn)在比較流行的編程語言java 語言。我叫侯暢,辦公室, 在信息學(xué)院 214。課前介紹:用途(為什么要學(xué)習(xí)此本科,它的應(yīng)用價(jià)值):現(xiàn)在用的多的是網(wǎng)絡(luò)編程,基于 web 的開發(fā),開發(fā)大的企業(yè)級應(yīng)用程序。是 JSP,J2EE 程序設(shè)計(jì)的基礎(chǔ)。用處廣泛小到的開發(fā),大到美國登陸火星的火星車。學(xué)習(xí)目標(biāo):(學(xué)好此門課,是一個(gè)長期學(xué)習(xí)和練習(xí)的過程)初步掌握 java 語言和面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想和思路,能夠編寫簡單的 java

2、 程序。為以后的應(yīng)用起到拋磚引玉的用作。如何學(xué)時(shí)分配:4016(計(jì)算機(jī)專業(yè)學(xué)時(shí));理學(xué)院信息與計(jì)算工程 32+16 學(xué)時(shí)進(jìn)度一直(較新的類書。近三年?)參考書:不指定參考書,要和課程整體介紹:概述;語言基礎(chǔ)及流程、數(shù)組、異常處理;面向?qū)ο蟪绦蛟O(shè)計(jì)(類、對象、繼承、多態(tài)等);常用類使用(String 等);GUI 設(shè)計(jì)下面開始學(xué)習(xí)第一章 概述 主要內(nèi)容Java 語言的發(fā)展歷史(產(chǎn)生);Java 語言的主要特性 (特點(diǎn));Java 程序相關(guān)問題;Java 程序的開發(fā)環(huán)境;Java 程序的開發(fā)過程第一章 概述(2 學(xué)時(shí))一、Java 語言的發(fā)展歷史1、 1991 年初, sun 公司(當(dāng)時(shí)的 sun

3、,2009 年 sun 被 oracle 公司兼并 74 億)的 James Gosling的 Green 小組開發(fā)了面向數(shù)字家電的 Oak 語言開發(fā)一個(gè)面向家用電器市場的軟件Oak 是 java 語言的前身;有心栽花花不開,無心插柳柳成蔭(面向家用電器市場的軟件競爭激烈的市場中失敗,而 java 語言風(fēng)靡全球)2、1993 年 出現(xiàn)早期的瀏覽器,www 頁面,需要靜態(tài)-動(dòng)態(tài)(有需求)(沒講)在3、1995 年 成為網(wǎng)絡(luò)的編程語言Internet 迅猛發(fā)展,Java 語言正式問世。被美國著名雜志 PC Magazine 評為 1995 年十大優(yōu)秀科技之一。寓意,向世人獻(xiàn)上一杯熱咖啡。到 201

4、0 年 15 年,發(fā)展多么迅速,java 語言為性的編程語言是其具有跨平臺(tái)性。4、1996 年 sun 成了 Javasoft 分公司來發(fā)展 javajavaone 成為全世界 java 開發(fā)者的盛會(huì)。(沒講)5、1998 推出了 Java2 平臺(tái)(1.2 版本)。性能上有所提高(成熟),而且對 Java 的基本模式進(jìn)行了完善(功能更完善),并提供了更為豐富的 APIJava 版本變化:1.0;1.1;1.2;1.3;1.4 ;1.5(5.0);6.0Java 的版本劃分:JavaJavaSE:java platform standard edition 標(biāo)準(zhǔn)版或標(biāo)準(zhǔn)平臺(tái),是其它兩個(gè)的基礎(chǔ)。開

5、發(fā)部署桌面、服務(wù)器等 java 應(yīng)用程序。JavaEE: java platform enterprise edition 企業(yè)版JavaME: java platform micro edition 微小版,移動(dòng)設(shè)備和設(shè)備二、Java 語言的主要特性lll面向?qū)ο螅阂磺卸际菍ο蠛唵危阂讓W(xué)好用可移植性(平臺(tái)無關(guān)性):程序可在任一安裝 JVM 的上運(yùn)行。(os 變化,處理器升級及系統(tǒng)的變化,均可使系統(tǒng)出現(xiàn)錯(cuò)誤,無法運(yùn)行)ll多線程:支持多線程可靠和安全,分布式三、Java 程序相關(guān)問題 Java 程序的運(yùn)行機(jī)制1、計(jì)算機(jī)的高級編程語言類型:u 編譯型:c 語言就是。u 解釋型:java 語言有解

6、釋部分。以中文與法文的翻譯為例:編譯型直接翻譯;解釋型先轉(zhuǎn)為世界語英文。nnJava 語言是兩種類型的結(jié)合;Java 源程序、字節(jié)碼文件,碼指令。Java 程序相關(guān)問題Java 虛擬機(jī)llJava 虛擬機(jī)在真實(shí)中用軟件模擬實(shí)現(xiàn)的一種抽象的。(Java 虛擬機(jī)規(guī)范) 區(qū)、碎片回收區(qū)Java 虛擬機(jī)主要由五個(gè)部分組成:指令系統(tǒng)、寄存器、棧、Java程序Java APIJava虛擬機(jī)操作系統(tǒng)硬件平臺(tái)l解釋和執(zhí)行 Java 程序編譯后產(chǎn)生的字節(jié)碼Java 程序相關(guān)問題Java APIlJava API 是 Java 系統(tǒng)提供的預(yù)先定義好的軟件組件的集合,它們提供了許多可供程序員調(diào)用的常用功能豐富的 A

7、PI 為程序員提供了極大的方便,但也是學(xué)習(xí)的難點(diǎn)ll 要學(xué)會(huì)使用 Java API 手冊(The Java 2 Platform API Specification )lJava 程序相關(guān)問題Java 程序類型Java 應(yīng)用程序(Java Application)是完整的程序在命令行調(diào)用的解釋器軟件即可運(yùn)行主類必須有 main 方法,這也是程序的Java 小程序Java Applet是指在客戶端運(yùn)行的 Java 小程序,一般來說客戶端是指用戶所使用的瀏覽器Java Servlet是在服務(wù)器端執(zhí)行的 Java 小程序,為了能夠支持 Servlet 的運(yùn)行,服務(wù)器端必須安裝包含 Java 虛擬機(jī)的

8、服務(wù)器軟件,這種能夠支持服務(wù)端小程序的服務(wù)器一般被稱為應(yīng)用服務(wù)器四 Java 開發(fā)環(huán)境搭建從 Sun上;安裝;(安裝在 java 目錄下)設(shè)置環(huán)境變量 :方法有三:lll開始運(yùn)行輸入 cmd 或者開始程序附件命令提示符開始設(shè)置面板系統(tǒng)高級環(huán)境變量電腦右鍵屬性系統(tǒng)特性高級常用命令:javacjavaappletviewer 等Cmd 進(jìn)入命令提示符:模擬 dos 命令:怎么學(xué)習(xí)上網(wǎng)搜常用的 dos 命令就可。Cls:清屏。e:;dir;cd;cd ./.;set path=%path%;v JDK/J2SDK(Java Developer Kit)§§§JDK1.0

9、2 JDK1.1.xJDK1.2/J2SDK1.3/J2SDK1.4/JDK5.0(J2SDK1.5)v Java 集成開發(fā)環(huán)境(IDE)§§§§NetBeans JBuilder Eclipse JCreatorJDK 的安裝與設(shè)置從可以相關(guān)版 本的 JDK(本課程采用 J2SDK1.3 以上版本)在 Windows 平臺(tái)上運(yùn)行安裝程序,以安裝 JDK設(shè)置 PATH(文件路徑)參數(shù)。由于 JDK 提供的實(shí)用程序都在安裝目錄下的子目錄 bin 下,為了能在任何目錄下直接使用文件名調(diào)用這些程序,必須設(shè)置操作系統(tǒng)的文件路徑參數(shù)環(huán)境設(shè)置JDK 的目錄結(jié)構(gòu)

10、16;ØØØbin 目錄中包含了所有 JDK5.0 提供的實(shí)用程序demo 目錄中包含了 JDK5.0 自帶的實(shí)例程序inculde 目錄中包含了一些支持 Java native 方法的 CC+頭文件jre 目錄中包含了 Java 運(yùn)行環(huán)境所需的所有文件,這個(gè)目錄中所包含的 java 運(yùn)行環(huán)境是 JDK私有的,它只為 JDK 的實(shí)用程序提供支持lib 目錄中包含了 Java 開發(fā)環(huán)境所需的庫文件,它們以 jar 文件的形式保存sample 目錄中包含的是體現(xiàn) JDK5.0 新特性的一些例程ØØJDK 實(shí)用程序簡介javac:Java 編譯器,將

11、 Java 源代碼編譯為字節(jié)碼; java:Java 解釋器,用來解釋執(zhí)行 Java 程序的字節(jié)碼文件; appletviewer(小程序?yàn)g覽器):一種執(zhí)行 HTML 文件上的 Java 小程序類的 Java 瀏覽器;javadoc:根據(jù) Java 源代碼及其說明語句生成的 HTML 文檔;jdb:Java 調(diào)試器,可以逐行地執(zhí)行程序、設(shè)置斷點(diǎn)和檢查變量;javah:產(chǎn)生可以調(diào)用 Java 過程的 C 過程,或建立能被 Java 程序調(diào)用的 C 過程的頭文件;javap:Java 反匯編器,顯示編譯類文件中的可功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼含義。五 Java 程序的開發(fā)過程編輯源代碼 一般情況下

12、,我們可以使用系統(tǒng)平臺(tái)下的任何文本編輯器進(jìn)行源代碼的編輯,在 Windows 平臺(tái)下常用的是 Window 系統(tǒng)自帶的“記事本”程序或“寫字板”程序Java 源碼大小寫敏感Java 源碼文件的擴(kuò)展名:.javaJava 源程序文件也不能隨意命名,其文件名必須與程序中主類的類名完全相同,包括大小寫在內(nèi)public class HelloWorldpublic static void main(String args)/Java 應(yīng)用程序方法System.out.println("Hello World!"); /向臺(tái)打印一條信息編譯源代碼文件使用 JDK 實(shí)用程序 javac

13、 對源代碼文件進(jìn)行編譯C:MyJava>javac MyFirstJavaApp.java如果系統(tǒng)提示符再次出現(xiàn)并且沒有任何消息產(chǎn)生,那么編譯便了如果有系統(tǒng)報(bào)錯(cuò)消息產(chǎn)生,則表示程序編譯出錯(cuò),程序員必須閱讀報(bào)錯(cuò)信息,并根據(jù)這些信息對程序進(jìn)行修改程序編譯后,在與源代碼文件同一目錄下會(huì)生成一個(gè)新的文件,其文件名與源代碼文件名相同,擴(kuò)展名為“.class”。這個(gè)文件就是源代碼文件編譯產(chǎn)生的程序字節(jié)碼文件MyFirstJava.class運(yùn)行程序要執(zhí)行一個(gè) Java 程序非常簡單,只需在字節(jié)碼文件所在目錄下輸入下列命令就可以了:java 字節(jié)碼文件名a)Applet:第一個(gè) Applet 程序,開

14、發(fā) Java 小應(yīng)用的基本步驟:i.ii.編寫源代碼編譯源代碼,生成 .class 文件iii. iv.利用文本編輯器編寫一個(gè) html 文件運(yùn)行該程序 appletviewerimport java.awt.*; import java.applet.*;public class ch1_2 extends Applet public void paint(Graphics g) g.setColor(Color.red);g.setFont(new Font("宋體",Font.BOLD,36);g.drawString("My first Applet!&q

15、uot;,25,25);Ch1_2.html<APPLET CODE="Ch1_2.class" width=200 height=200></APPLET>/大寫也可以用小寫。Appletviewer a.html第二章 語言基礎(chǔ)(2 學(xué)時(shí))主要內(nèi)容:注釋、關(guān)鍵字、標(biāo)識(shí)符 數(shù)據(jù)類型、常量、變量、運(yùn)算符、分割符、表達(dá)式1.注釋用來說明程序段,增加程序的可讀性。 注釋的類型:/ 注釋一行/* . */ 注釋若干行/* . */ 注釋若干行,并寫入 javadoc 文檔java 文檔注釋:通常這種注釋的多行寫法如下:/* .* .*/javadoc -d

16、 文檔存放目錄 -author -version 源文件名.java這條命令編譯一個(gè)名為 “源文件名.java”的 java 源文件,并將生成的文檔存放在“文檔存放目錄”指定的目錄下,生成的文檔中 index.html 就是文檔的首頁。-author 和 -version 兩個(gè)選項(xiàng)可以省略。例子:author LEIversion 1.10 2005-09-01/*一個(gè)例子(文檔注釋)*/public class SampleDoc/*主方法(文檔注釋)*/public staticvoid main(String args)System.out.pritnln("文檔注釋的例子&q

17、uot;);在命令提示符窗口,將當(dāng)前路徑設(shè)置到 SampleDoc.java 文件所在目錄用如下命令javadoc SampleDoc.java 會(huì)生成很多 HTML 文件,打開 index.html 可以看到結(jié)果,由/*開頭,*/ 結(jié)尾的為文檔注釋會(huì)顯示到對應(yīng)位置2.標(biāo)識(shí)符是類、對象、方法、變量和用戶定義的數(shù)據(jù)類型等名字,可任意長,1) 必須以字母、下劃線_或美圓符號(hào)$開頭。2) 后面由字母、下劃線_、美圓符號(hào)和數(shù)字組成的字符串。3) 使用 uniocode 字符集。既包括拉丁字母 abc,也包括漢字日文韓文俄文等其它語言中的文字。4) 不可為關(guān)鍵字。練習(xí):3.關(guān)鍵字Java 中一些賦以特定

18、的含義、并用做專門用途的單詞稱為關(guān)鍵字。不能作標(biāo)識(shí)符Class public static void extend4.分隔符(1)括號(hào)()用來隔開表達(dá)式、或表示方法調(diào)用。如:y=y*(x+2);abc.finc() main()abstractdoimplementprivatethisbooleandoubleimportprotectedthrowbreakelseinstanceofpublicthrowsbyteextendintreturntransientcasefalseinterfaceshorttruecatchfinallongstatictrycharfianllynat

19、ivesupervoidclassfloatnewswitchvolatilecontinuefornullsynchronizedwhiledefaultifpackage合法標(biāo)識(shí)符標(biāo)識(shí)符TeStHello WorldA11A_booleanbooleanA$CACa#變量String(2) 方括號(hào)用來表示一維或數(shù)組的下標(biāo)。如 y=b5; int a=new int1010;(3) 花括號(hào)表示復(fù)合語句,即一個(gè)程序塊的開始和結(jié)束。在 class 后表示一個(gè)類程序塊。(4)逗號(hào),用來分隔方法參數(shù)中的參數(shù)、同一變量連續(xù)以及用于逗號(hào)表達(dá)式等。(5)分號(hào);是句子的終止符,任何合法的 Java 語句后,

20、必須有分號(hào),花括號(hào)后沒有。5java 的數(shù)據(jù)類型¡¡Java 是一門強(qiáng)類型語言。即:所有的變量都必須顯式類型。分為兩大類:基本數(shù)據(jù)類型(也稱為簡單類型)和數(shù)據(jù)類型。¡簡單類型指的是一個(gè)數(shù)、一個(gè)字符或者一個(gè) true/false 值。它不提供任何與它們所持有的數(shù)據(jù)類型相關(guān)的行為。Java 有 8 種簡單類型。¡整數(shù)類型:Java 各整數(shù)類型有固定的表數(shù)范圍和字段長度,而不受具體操作系統(tǒng)的影響,以保證 Java 程序的可移植性 。¡ Java 語言的整型常量默認(rèn)為 int 型,如:l int i =3;¡ Java 語言整型常量的表示形式

21、:進(jìn)制前綴或后綴范例十進(jìn)制數(shù)-25、-56八進(jìn)制數(shù)0-0312、-032十六進(jìn)制數(shù)0x-0x25、0x7f長整形-L12L、-34L類型占用空間表數(shù)范圍byte1 字節(jié)-27 27-1 (-128 127)short2 字節(jié)-215 215-1 (-3276832767)int4 字節(jié)-231 231-1 (-21474836482147483647)long8 字節(jié)-263 263-1¡Java 浮點(diǎn)類型有固定的表數(shù)范圍和字段長度。和整數(shù)類型一樣,在 java 中,符點(diǎn)類型的范圍與無關(guān)。¡Java 浮點(diǎn)型常量默認(rèn)為 double 型,可以直接用數(shù)字表示或者在數(shù)字后面加 d

22、 或 D 如要一f =個(gè)常量為 float 型,則需在數(shù)字后面加 f 或 F,如: doubled = 3.14 或 3.14d; 3.14f;float字符型數(shù)據(jù)用單引號(hào)括起來的單個(gè)字符(轉(zhuǎn)義符)。在 Java 中,字符類型不能用作整數(shù),因?yàn)?Java 中沒有無符號(hào)整數(shù)類型。變量只能為單字符。轉(zhuǎn)義符表:.布爾型數(shù)據(jù)只有 true(真)和 false(假),長度為 8 位。轉(zhuǎn)義符描述n換行f換頁t水平制表b退格單引號(hào)”雙引號(hào)反斜杠r回車類型占用空間表數(shù)范圍float4 字節(jié)-3.403E383.403E38double8 字節(jié)-1.798E3081.798E308表數(shù)形式組成十進(jìn)制數(shù)字和小數(shù)點(diǎn)

23、 .科學(xué)記數(shù)數(shù)字 e(E)整數(shù)7.變量是 Java 語言運(yùn)行中數(shù)值可變 的數(shù)據(jù),通常<類型><變量名>=初值運(yùn)算中間結(jié)果或保存數(shù)據(jù)。6.常量程序運(yùn)行中不可改變的量。共有五種:整形、浮點(diǎn)、布爾、字符和字符串常量。 可使用 final 定義, 如final double PI=3.1415926vvv你可以在任意范圍里將一個(gè)變量定義為最終變量(final) 最終變量的值一經(jīng)初始化就不能改變類似于 C 語言中的常量(const)8. 運(yùn)算符是用來對變量和其他對象進(jìn)行運(yùn)算操作的符號(hào)。分為四類:算術(shù)操作、位操作、關(guān)系操作和邏 輯操作。2.算術(shù)運(yùn)算(1)雙目運(yùn)算符注意:1.只有整形

24、數(shù)據(jù)才能進(jìn)行取余運(yùn)算。2.整形除法的結(jié)果只截取整數(shù)部分。(2) 單目運(yùn)算符注意,a+和+a 的區(qū)別:a+是先進(jìn)行其他運(yùn)算后進(jìn)行單目運(yùn)算, int x=2;+a 是先進(jìn)行單目運(yùn)算。int y=(+x)*3;結(jié)果為 x=3,y=9。運(yùn)算符運(yùn)算例功能+自增a+或+aa=a+1-自減a-或-aa=a-1-求反-aa=-a運(yùn)算符運(yùn)算例功能+加a+b求 a 與 b 相加的和-減a-b求 a 與 b 相減的差*乘a*b求 a 與 b 相乘的積/除A/b求 a 除以 b 的商%取余a%b求 a 除以 b 所得的余數(shù)int y=(x+)*3;3.關(guān)系運(yùn)算結(jié)果為 x=3,y=6。關(guān)系運(yùn)算的運(yùn)算結(jié)果為步爾型的量:“

25、真”或“假” 3.邏輯運(yùn)算非簡潔運(yùn)算與簡潔運(yùn)算的區(qū)別是:當(dāng)能夠都計(jì)算。出表達(dá)式結(jié)果時(shí),簡潔運(yùn)算運(yùn)算符右邊表達(dá)式忽略不執(zhí)行。非簡潔運(yùn)算運(yùn)算符兩邊如:int x=3,y=5;Boolean b=x>y&&x+= =y- - 結(jié)果為:x=3,y=5,b=false Boolean b=x>y&x+= =y- -結(jié)果為:x=4,y=4,b=false 5.位運(yùn)算運(yùn)算符運(yùn)算例功能位反xx 按位取反>>右移x>>ax 各位右移 a 位<<左移x<<ax 各位左移 a 位>>>不帶符號(hào)右移x>>

26、>a左邊的空位添零運(yùn)算符運(yùn)算例功能&非簡潔與x&yx,y 為真時(shí)結(jié)果為真|非簡潔或x | yx,y 為假時(shí)結(jié)果為假!取反!x與 x 相反異或xyx,y 為真時(shí)結(jié)果為假&&簡潔與x&&yx,y 為真時(shí)結(jié)果為真| |簡潔或x| |yx,y 為真時(shí)結(jié)果為假運(yùn)算符功能= =等于!=不等于>大于<小于>=大于等于<=小于等于6 其他運(yùn)算符+:表示連接符三目條件運(yùn)算符?: 如:x?y:z若 x=true,則結(jié)果為 y;若 x=false,則結(jié)果為 z。其他如:<變量 1><運(yùn)算符>=<變量 2>

27、;,可為:<變量 1>= <變量 1> <運(yùn)算符> <變量 2>如: x+=ax=x+a如何避免多個(gè)運(yùn)算符帶來的問題:l不要在一行中編寫太復(fù)雜的表達(dá)式,也就是不要在一行中進(jìn)行太多的運(yùn)算,改成幾條語句的 運(yùn)行對于優(yōu)先級順序,也不用刻意去記,有個(gè)印象就行如果你實(shí)在弄不清這些運(yùn)算先后關(guān)系的話, 就用括號(hào)或是分成多條語句來完成你想要的功能l9 表達(dá)式表達(dá)式是由變量、常量、對象、方法調(diào)用和操作符組成的式子。表達(dá)式的值是它運(yùn)算的結(jié)果。1.賦值和強(qiáng)制類型轉(zhuǎn)換<對象或變量>=<表達(dá)式>;如:k=i+j+5;myString=Mydoubl

28、e.toString();類型轉(zhuǎn)換時(shí),短數(shù)據(jù)轉(zhuǎn)化為長數(shù)據(jù)時(shí),可不做顯式類型轉(zhuǎn)換說明;長數(shù)據(jù)轉(zhuǎn)化為短數(shù)據(jù)時(shí),必須做 顯式類型轉(zhuǎn)換說明。如:byte MyByte=10;intMyInteger =-1; MyInteger = MyByte;MyByte = (byte)MyInteger;十進(jìn)制二進(jìn)制補(bǔ)碼x<<2x>>2x>>>23000011110011110000000011100000111-1711101111101111001111101100111011¡¡¡表達(dá)式是運(yùn)算符和操作數(shù)的結(jié)合,它是任何一門編程語言的

29、關(guān)鍵組成部分表達(dá)式程序員進(jìn)行數(shù)學(xué)計(jì)算、值的比較、邏輯操作以及進(jìn)行對象的操作。一些表達(dá)式的例子:lllllX X+10Y=x+10 Arr10student.getName()第三章 語句(2 學(xué)時(shí))語句的次序有四種:順序;分支;循環(huán);跳轉(zhuǎn)¡¡¡¡順序結(jié)構(gòu)語句按書寫順序依次執(zhí)行。分支結(jié)構(gòu)根據(jù)表達(dá)式的值執(zhí)行哪個(gè)分支。循環(huán)結(jié)構(gòu)在一定條件下反復(fù)執(zhí)行一段語句。跳轉(zhuǎn)結(jié)構(gòu)滿足某個(gè)條件時(shí),跳出循環(huán)每種語句:語法;流程;例子;注意事項(xiàng)。分支語句If 語句¡ If 語句的基本形式if(布爾表達(dá)式)語句區(qū)塊 1 else語句區(qū)塊 2¡¡¡

30、;其中 else 分支可選執(zhí)行流程注意事項(xiàng):表達(dá)式(值只能為 true 或 false);語句(單個(gè)語句或復(fù)合語句)給出的一個(gè)成績,輸出 “通過”或“不及格” If 語句的嵌套¡ 形式:if(布爾表達(dá)式 1)if(布爾表達(dá)式 2)語句區(qū)塊 2 elseif(布爾表達(dá)式 3)語句區(qū)塊 3.else語句區(qū)塊 n+1elseif(布爾表達(dá)式 2)語句區(qū)塊 2 elseif(布爾表達(dá)式 3)語句區(qū)塊 3.else語句區(qū)塊 n+1¡ 注意事項(xiàng): else 的匹配(與和它最近的 if 進(jìn)行匹配,除非用進(jìn)行強(qiáng)制匹配方式);語句區(qū)塊條件運(yùn)算符¡ 一些簡單的 if/else 語句,

31、可用條件運(yùn)算符來替代¡ 一般形式:布爾表達(dá)式 1?表達(dá)式 2 :表達(dá)式 3¡¡else¡m=(x>y)?x :yif (x>y) m=y;m=x;例: a=1; b=2; x=(a>b) ? a : b;Switch 語句¡¡¡解決 if 嵌套語句的問題:嵌套層次多時(shí),可讀性低switch 語句 處理多分支選擇格式:switch(表達(dá)式)case case case值 1:語句區(qū)塊 1;break; /分支 1值 2:語句區(qū)塊 2;break; /分支 2值 n:語句區(qū)塊 n;break; /分支 n de

32、fault :語句區(qū)塊 n+1;/分支 n+1¡¡注意:表達(dá)式的值必須是整形(但不能是 long 型)或字符型。例 3-3循環(huán)語句While 語句:¡ 語法格式:while(條件表達(dá)式)循環(huán)體語句¡ 當(dāng)表達(dá)式為真時(shí),執(zhí)行循環(huán)體,然后無條件轉(zhuǎn)移到表達(dá)式進(jìn)行行。;為假時(shí),跳過循環(huán)體執(zhí)¡ 例 3-4:水仙花數(shù)是一個(gè)三位數(shù),各位數(shù)字的立方和就是這個(gè)數(shù)的本身。如 371=33+73+13, 371 是水仙花數(shù)。其中。Math.pow(i,3)是計(jì)算i 的三次方。Do。while 語句¡ 語法形式為:do循環(huán)體的若干語句 while(條件表達(dá)式)

33、;¡ do-while 語句與 while 語句很類似,不同的是,首先執(zhí)行循環(huán)體,然后對表達(dá)式進(jìn)行¡ 當(dāng)表達(dá)式為真時(shí),再執(zhí)行循環(huán)體,否則跳過循環(huán)體執(zhí)行。循環(huán)體至少執(zhí)行一次。,¡ 輸出滿足 1+2+3+n<8888 的最大正整數(shù) 例 3-5 For 語句¡ 語法形式為:for(表達(dá)式 1;表達(dá)式 2;表達(dá)式 3)循環(huán)體語句¡其中表達(dá)式 1,設(shè)置初始化循環(huán)變量和其他變量;表達(dá)式 2,是用來達(dá)式 3,用來修改循環(huán)變量,改變行循條件。首先由表達(dá)式 1 進(jìn)行初始化,當(dāng)表達(dá)式 2 為真時(shí),執(zhí)行循環(huán)體,然后轉(zhuǎn)移到表達(dá)式 3 改變行循環(huán)是否結(jié)束;表

34、61;循條件,再對表達(dá)式 2 進(jìn)行例 3-6:求 5+55+555例 3-7:輸出圖形;若為真,繼續(xù)循環(huán)。否則,終止循環(huán)體執(zhí)行。¡¡+前十項(xiàng) 之和11 21 2 31 2 3 41 2 3 4 51 2 3 4 5 61 2 3 4 5 6 71 2 3 4 5 6 7 81 2 3 4 5 6 7 8 9¡ 作業(yè):輸出乘法口訣表跳轉(zhuǎn)語句Continue 語句¡ 必須用于循環(huán)結(jié)構(gòu)中,有兩種形式:1) 無標(biāo)號(hào) continue 語句,終止當(dāng)前循環(huán),即略過循環(huán)中剩下的語句,重新開始新的循環(huán)2) 有標(biāo)號(hào) continue 語句的形式為continue標(biāo)號(hào)名;標(biāo)

35、號(hào)一般在外層循環(huán)語句的前面,終止標(biāo)記循環(huán)Break 語句¡ 作用是完全跳出循環(huán)。有帶標(biāo)號(hào)和無標(biāo)號(hào)兩種形式:1) 無標(biāo)號(hào) break 語句,從 switch 分支或循環(huán)內(nèi)部跳轉(zhuǎn)出來,執(zhí)行分支或循環(huán)后面的語句。2) 有標(biāo)號(hào) break 語句的形式為break 標(biāo)號(hào)名;從標(biāo)號(hào)所標(biāo)識(shí)的語句塊中跳出來,執(zhí)行該語句塊后面的語句。例 3-8 :求 50 以內(nèi)的素?cái)?shù)第四章 面向?qū)ο蟮木幊谈拍睿?對象和接口)(6 學(xué)時(shí)) 編程語言的發(fā)展自然語言面向?qū)ο蟮恼Z言非OO的高級語言匯編語言語言 語言:電流的通/斷,或電位的高/低兩種狀態(tài)整個(gè)語言只包含“0”和“1”兩種符號(hào)離計(jì)算機(jī)最近,能夠直接執(zhí)行它沒有絲毫

36、的形象意義效率最低,并且在編寫程序時(shí)很容易發(fā)生錯(cuò)誤匯編語言易于理解和記憶的符號(hào)來代替二進(jìn)制碼,用符號(hào)程序仍然是一種與具體語言。硬件有關(guān)的語言,是一種面向的語言,因此也稱為符號(hào)化的高級語言§§§以功能為組織單元通過數(shù)據(jù)結(jié)構(gòu)來描述具體的問題數(shù)據(jù)在功能(函數(shù))之間以參數(shù)的形式被傳送與具體指令系統(tǒng)無關(guān)、表達(dá)方式接近自然語言的計(jì)算機(jī)語言具有一定涵義的數(shù)據(jù)命名和人們?nèi)菀桌斫獾膱?zhí)行語句,了細(xì)節(jié),使得人們在書寫和閱讀程序時(shí)可以到程序所描述的具體事物。結(jié)構(gòu)化程序設(shè)計(jì)中,把程序概括為如下的公式:程序=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο蟮恼Z言§§§§用類 c

37、lass 封裝數(shù)據(jù)以及與數(shù)據(jù)相關(guān)的操作用類的繼承性來實(shí)現(xiàn)類的重用性多態(tài)性面向“對象”,由對象提供服務(wù) 直接地描述問題域中客觀存在的事物(即對象)以及它們之間的關(guān)系??陀^事物(問題域)計(jì)算機(jī)(硬件)語言的鴻溝 程序描述為公式:程序=對象+消息 能夠比較直接地反映客觀世界的本來面目,并且使軟件開發(fā)用的一般思維方法來進(jìn)行軟件開發(fā) 與自然語言之間的差距最小能夠運(yùn)用人類認(rèn)識(shí)事物所采人們在認(rèn)識(shí)世界的過程中,運(yùn)用分類、抽象、封裝、繼承等原則對客觀世界產(chǎn)生了正確、扼要的認(rèn)識(shí)面向?qū)ο笾杂羞@么大的生命力就是運(yùn)用了這些原則,把它們加到程序設(shè)計(jì)中,讓人用另一種眼光對待編程。OOP 力圖使對計(jì)算機(jī)語言中對事物的的描

38、述與現(xiàn)實(shí)世界中該事物的本來面目盡可能的一致Java 語言是面向?qū)ο笳Z言下面看一下現(xiàn)實(shí)世界和計(jì)算機(jī)世界實(shí)體和類與對象的對應(yīng)關(guān)系本節(jié)內(nèi)容:類和對象的概念;定義類;創(chuàng)建對象;數(shù)據(jù)成員;成員方法。下面看一下二 類和對象的概念1類是對一類事物描述,是抽象定義;定義:類是具有相同屬性和服務(wù)的一組對象的集合,它為屬于該類的所有對象提供了統(tǒng)一的抽象的、概念上的描述。 在面向?qū)ο蟮木幊陶Z言中,類是一個(gè)的程序,它應(yīng)該有一個(gè)類名并包括屬性說明(數(shù)據(jù))和服務(wù)說明(行為特征)兩個(gè)主要部分2對象是實(shí)際存在的該類事物的每個(gè),是類中的一個(gè)成員,因而也稱實(shí)例(instance)。v 現(xiàn)實(shí)世界是由對象的v 現(xiàn)實(shí)世界中任何實(shí)體都可

39、以看作是對象 v 現(xiàn)實(shí)世界中的對象有兩個(gè)共同特征:§ 狀態(tài)§ 行為 3 類和對象的關(guān)系: 類是對象的抽象和概括,對象是類的實(shí)例4 例子類:學(xué)生抽象屬性:數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)值學(xué)號(hào)班級實(shí)例化服務(wù):上課方法名選課執(zhí)行的操作三 Java 類的定義¡ 語法格式:修飾符 class < class_name(標(biāo)識(shí)符)> <attribute_declarations>屬性<constructor_declarations>構(gòu)造方法<method_declarations>方法¡ 舉例:public class Student

40、/定義屬性String name; String sex;String grade;int id;void xuanke(String kechenming)輸出我選了“”課void shangke(String kechenming)1)屬性的:即變量¡ 語法格式:¡ 修飾符type(類型)< 屬性名字> =初值 ;¡ 數(shù)據(jù)成員類型可以是 java 的任何一種數(shù)據(jù)類型,包括所有基本數(shù)據(jù)類型和2)方法的數(shù)據(jù)類型¡語法格式:< 修飾符> <返回類型> <方法名字>(<參數(shù)列表>) 方法體內(nèi)容返回值

41、類型及形式參數(shù)可以是任何一種數(shù)據(jù)類型,若不需要返回?cái)?shù)據(jù)時(shí),類型寫 void ,需要返回值,通過 return 語句返回,方法中 return 語句后的語句不再執(zhí)行。參數(shù):多個(gè)參數(shù)用 ,隔開包括局部變量的定義和合法的 java 語句。¡¡¡舉例:定義類名位“梯形”的類:4 個(gè) float 的成員變量:上底,下底,高和面積,一個(gè)成員方法,計(jì)算面積。3) 構(gòu)造器(Constructor)的¡ 語法:對象:張三靜 態(tài) 特 征 : 張 三女 200732會(huì)計(jì)1班動(dòng)態(tài)特征:上課選課<修飾符><類名>( <參數(shù)列表> ) <s

42、tatements>¡ 一種特殊方法,它的特殊性主要體現(xiàn)在以下幾個(gè)方面(1)(3)(4)構(gòu)造方法的方法名與類名相同。不能對構(gòu)造方法指定返回類型。(2) 用來創(chuàng)建對象。構(gòu)造方法一般不能由編程顯式地直接調(diào)用,由系統(tǒng)自動(dòng)調(diào)用。(5) 構(gòu)造方法可以重載,即可定義多個(gè)具有不同參數(shù)的構(gòu)造方法。(6) 構(gòu)造方法可以繼承,即子類可以繼承父類的構(gòu)造方法。(7) 如果用戶在一個(gè)定義類中未定義構(gòu)造方法,系統(tǒng)將為它定義一個(gè)缺省的空構(gòu)造方法。如果用戶定義構(gòu)造方法,系統(tǒng)就不再提供默認(rèn)的作用:減少對數(shù)據(jù)成員的賦值操作。方法的重載¡ 指一個(gè)類中具有相同方法名的方法¡這些方法的參數(shù)必須不同;

43、參數(shù)不同指參數(shù)的數(shù)據(jù)類型不同或者參數(shù)的個(gè)數(shù)不同四 對象創(chuàng)建、使用及回收步驟:對象;建立對象;初始化對象1對象格式:類名對象名列表;此時(shí)系統(tǒng)只為該變量分配的空間,值為 null,并未創(chuàng)建具體的對象; 對象名表有多個(gè)對象名時(shí),用逗號(hào)隔開; 確定對象的名稱和它所屬的類2 建立對象為對象分配空間內(nèi)存,并獲得一個(gè),使該對象成為類的實(shí)例vvvnew 操作符通過為新對象分配內(nèi)存來實(shí)例化一個(gè)類new 操作符需要一個(gè)后綴參數(shù),即構(gòu)造器的一個(gè)調(diào)用new 操作符返回一個(gè)對它所創(chuàng)建對象的,通常該被賦值給具有適當(dāng)類型的變量v 如果 new 操作符返回的沒有被賦給任何變量,那么當(dāng) new 操作符所在的語句執(zhí)行完后,將無法

44、該對象格式:對象名=new 構(gòu)造方法( )例如: object_one=new class_name( );此時(shí),類的成員變量被分配內(nèi)存空間,然后執(zhí)行構(gòu)造方法中的語句。沒有給初值時(shí),為默認(rèn)值。對應(yīng)內(nèi)存空間由對象名操作管理。返回內(nèi)存首地址( 象在計(jì)算機(jī)內(nèi)存中,有一個(gè)叫張三的學(xué)生。1 2 可以何為一條語句。3 初始化對象)給對象名。如果你想象力豐富,就可以想¡¡¡¡為對象確定初始狀態(tài),即為它的數(shù)據(jù)成員賦初值通過賦值語句實(shí)現(xiàn) 4-1通過構(gòu)造方法實(shí)現(xiàn) 4-2使用默認(rèn)值當(dāng)一個(gè)對象被創(chuàng)建時(shí),會(huì)對其中各種類型的成員變量自動(dòng)進(jìn)行初始化賦值。4 使用對象v 對象的使用有兩

45、種方式§§操作或者檢查它的變量調(diào)用它的方法v 要使用對象的實(shí)例成員,首先需要得到該對象的首先內(nèi)存總體分為了 4 個(gè)部分,包括 stack segment segment ;、heap segment、code segment 、data其中我們程序中用關(guān)鍵字 new 出來的東西都是存放在 heap segment;程序中的局部變量存放在 stack segment,這些局部變量是在具體方法執(zhí)行結(jié)束之后,系統(tǒng)自動(dòng)內(nèi)存(而 heap segment 中的需要 java回收機(jī)制來處理);程序中的方法,是內(nèi)存中的 code segment 中的,而且是多個(gè)對象 共享一個(gè)代碼空間區(qū)域

46、;static 靜態(tài)變量,需要放在內(nèi)存中的 data segment 中,棧(stack):是自動(dòng)分配變量,以及函數(shù)調(diào)用所使用的一些空間(所謂的局部變量),地址由高向低減少;堆(heap):由malloc,new 等分配的空間的地址,地址由低向高增長。¡ 使用(、操作)對象的屬性和方法¡格式:對象名.數(shù)據(jù)成員名對象名.成員方法名(參數(shù)表)參數(shù)傳遞¡¡形式參數(shù);實(shí)際參數(shù)實(shí)參變量是基本數(shù)據(jù)類型時(shí),對形參變量的數(shù)據(jù)傳遞是值傳遞:只能由實(shí)參傳遞給形參,而不能由形參傳遞給實(shí)參¡實(shí)參變量是類型時(shí),對形參變量的數(shù)據(jù)傳遞是雙向地址傳遞:此時(shí)形參和實(shí)參的對象引用

47、指向同一個(gè)對象,對形參數(shù)據(jù)成員的修改會(huì)使實(shí)參對象的數(shù)據(jù)成員發(fā)生同樣的變化class PassValuepublic static void main(String args)System.out.println(x);int x = 5;change(x);public static void change(int x) x = 3;classPassRefint x ;public static void main(String args)PassRef obj = new PassRef();obj.x = 5;change(obj);System.out.println(obj.x);p

48、ublic static void change(PassRef obj) obj.x=3;5 對象的回收-Java 的回收機(jī)制的形成;t2=t1;t2 原來分配的內(nèi)存空間沒有成為。(與 c 語言中申請不同)自動(dòng)收集機(jī)制原理:提供一個(gè)系統(tǒng)級的線程,。但是收集的時(shí)候?qū)ο髢?nèi)存分配情況,統(tǒng)計(jì)對象內(nèi)存立即收集, jvm 認(rèn)為該收集的被的次數(shù),次數(shù)為 0 時(shí),就被認(rèn)為是時(shí)候會(huì)去收集。比如內(nèi)存比較少了,或者現(xiàn)在 cpu 比較閑,或者其他的策略,跟 jvm 自身的實(shí)現(xiàn)有關(guān)系回收能自動(dòng)內(nèi)存空間,減輕編程的負(fù)擔(dān),提高編程效率練習(xí):定義矩形類,三包v引入的§§§:容易找到和使用類避免

49、名稱vvv定義:包是一個(gè)相關(guān)的類和接口的集合,它可以提供保護(hù)和名稱空間管理。包是一種松散的類的集合,通常把需要在一起工作的類(互相)放入一個(gè)包。在 Java 語言程序設(shè)計(jì)中,通常需要定義許多類;就像利用 “文件夾”把許多文件組織在一起,使硬盤管理的文件更清晰、更有條理一樣;Java 利用“包”把一些需要在一起操作的類組織在一起,以便程序員更好地管理操作這些類。vv系統(tǒng)自動(dòng)建立“無名包”,也就是默認(rèn)包或缺省包在缺省情況下,系統(tǒng)會(huì)為每一個(gè)(.java)源文件創(chuàng)建一個(gè)無名(no name)包,這個(gè)源文件中定義的所有類都隸屬于這個(gè)無名包, 它們之間可以相互非 private(私有)的域或方法;無名包中

50、的類不能被其它包中的類所或復(fù)用。缺省包一般只用于臨時(shí)程序或測試程序.建議在實(shí)際系統(tǒng)開發(fā)中,為每個(gè)類指定有名的包。vvvvvJava 使用文件系統(tǒng)來的名稱必須和程序文件所在目錄名完全一樣(大小寫敏感)。如果定義了一個(gè)多級結(jié)構(gòu)的包,其結(jié)構(gòu)也必須和文件系統(tǒng)的目錄結(jié)構(gòu)完全一致。存放 java 源文件的目錄。象文件夾那樣把文件組織在一起,使其結(jié)構(gòu)清晰、有條理。1 創(chuàng)建包:使用關(guān)鍵字 package,且必須是.java 的第一個(gè)語句。1)語法為:package<top_pkg_name> .<sub_pkg_name> * ;通常為的倒寫再加上項(xiàng)目名2)編譯時(shí)用:javac d 路

51、徑名 class_name.java3)包中類的:v 只有公共的包成員可以從定義它們的包外的方法:,要從包外公共的包成員,必須采用以下§§§用成員的限定名導(dǎo)入包成員;導(dǎo)入成員所屬的整個(gè)包。使用包名、類名前綴:在類名前加上包名前綴。如: p1.teacher t1=new p1.teacher ();加載需要使用的類import p1.teacher ;直接定義: teacher t1=new teacher ();加載整個(gè)包 import p1.*;import java.awt.*;v 在使用 import 語句的時(shí)候,可以使用通配符一次導(dǎo)入一個(gè)包中的所有類,如

52、:import java.util.*;v 這樣,我們在使用 java.util 包中的任何類時(shí),就可以直接使用簡單類名。需要注意的是,import語句要么導(dǎo)入一個(gè)類,要么導(dǎo)入一個(gè)完整包。不能使用通配符標(biāo)記包的子集或多個(gè)包,下面 三條語句均無法通過編譯:import java.applet.A*; import java.*.*; import java.*.io;2 Java 類庫在 Java 系統(tǒng)中,定義好的類根據(jù)實(shí)現(xiàn)的功能不同,可以劃分成不同的集合。每個(gè)集合稱為一個(gè)包,所有包合稱為類庫¡Java 的類庫是系統(tǒng)提供的已實(shí)現(xiàn)的標(biāo)準(zhǔn)類的集合,它可以幫助開發(fā)者方便、快捷地開發(fā) Java程序有了類庫中的系統(tǒng)類,編寫 Java 程序時(shí)就不必一切從頭做起,避免了代碼的重復(fù)和可能的錯(cuò)誤,也提高了編程的效率。站在巨人的肩膀上。一個(gè)用戶程序中系統(tǒng)標(biāo)準(zhǔn)類使用得越多、越全面、越準(zhǔn)確,這個(gè)程序的質(zhì)量就越高¡¡Java 類庫中常用的包1.java.lang包含一些 Java 語言的常用功能。類,如 String、Math、Integer、System 和 Thread,提供2.java.awt包含了抽象窗口工具集(abstract window toolkits)的多個(gè)類,這些類被用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面

溫馨提示

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

評論

0/150

提交評論