JAVA培訓教程PPT_第1頁
JAVA培訓教程PPT_第2頁
JAVA培訓教程PPT_第3頁
JAVA培訓教程PPT_第4頁
JAVA培訓教程PPT_第5頁
已閱讀5頁,還剩392頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、JavaJava語言基礎面向?qū)ο箢惖膽脠D形組件線程及線程應用輸入與輸出Java小應用程序Java小游戲的實現(xiàn)網(wǎng)絡編程數(shù)據(jù)結(jié)構(gòu)1 語言基礎本章是講述Java語言的基礎語法,要求學生一定掌握。課程內(nèi)容:1.1 Java語言入門1.2 標識符、關鍵字和數(shù)據(jù)類型1.3 運算符,表達式和語句1.4 數(shù)組1.5 方法的封裝2 面向?qū)ο蟊菊率墙榻BJava面向?qū)ο蟮母拍?,講解面向?qū)ο蟮姆庋b性,多態(tài)性和繼承性,以及抽象類、嵌套類。課程內(nèi)容:2.1 面向?qū)ο蟮幕靖拍?.2 類與封裝2.3 static關鍵字2.4 內(nèi)部類2.5 類的繼承2.6 final關鍵字2.7 抽象類與接口2.8 類的多態(tài)2.9 異常2

2、.10 包3 類的應用本章是講解各種常用類的使用課程內(nèi)容:3.1 String類3.2 StringBuffer類3.3 Calendar類3.4 基本類型對象包裝類4 圖形組件本章是了解java的圖形組件及事件響應課程內(nèi)容:4.1 圖形用戶界面概述4.2 事件處理4.3 圖形圖像操作4.4常用組件5 線程及線程應用本章是了解線程的概念,掌握線程的控制,可以靈活運用線程課程內(nèi)容:5.1 線程的概念5.2 線程的使用5.3 線程同步6 輸入與輸出本章是了解程序與文件系統(tǒng)的交互方式,可以直接對文件進行讀寫控制課程內(nèi)容:6.1 File類6.2 字節(jié)流6.3 字符流6.4 編碼6.5 隨機文件7 J

3、ava小應用程序本章是介紹java小應用程序的使用,以及動畫的實現(xiàn)課程內(nèi)容:7.1 小應用程序的簡介7.2 小應用程序的執(zhí)行過程7.3 在小應用程序中的圖形和圖像控制7.4 聲音控制8 Java小游戲的實現(xiàn)本章是掌握對java小游戲的框架的了解,掌握游戲的編寫課程內(nèi)容:8.1 編寫游戲9 網(wǎng)絡編程本章是介紹通過類連接到www,然后討論如何通過TCP/IP或UDP協(xié)議在網(wǎng)絡上的兩個程序間建立連接并交換數(shù)據(jù)課程內(nèi)容:9.1 網(wǎng)絡概述9.2 InetAddress 類9.3 UDP網(wǎng)絡程序9.4 TCP網(wǎng)絡程序10 數(shù)據(jù)結(jié)構(gòu)本章是了解Java的數(shù)據(jù)結(jié)構(gòu),能夠靈活應用在游戲編程中課程內(nèi)容10.1 鏈表

4、10.2 堆棧10.3 隊列10.4 遞歸10.5 排序1 語言基礎1 語言基礎本章是講述java語言的基礎語法,要求學生一定掌握。課程內(nèi)容:1.1 Java語言入門1.2 標識符、關鍵字和數(shù)據(jù)類型1.3 運算符,表達式和語句1.4 數(shù)組1.5 方法的封裝1.1 Java語言入門1.1.1 Java特點1.1.2 Java語言編程過程1.1.3 Java的開發(fā)環(huán)境1.1.4 Java程序開發(fā)基本過程1.1.5 Java虛擬機的運行過程1.1.1 Java特點簡單面向?qū)ο?與平臺無關健壯性(Java的強類型機制、異常處理、內(nèi)存的自動收集等)1.1.2 Java語言編程過程Java源程序(*.ja

5、va)Java字碼文件(*.class)Java編譯程序Java虛擬機(JVM)執(zhí)行Window下的字節(jié)碼解釋程序Linux下的字節(jié)碼解釋程序Window操作系統(tǒng)Linux操作系統(tǒng)1.1.3 Java的開發(fā)環(huán)境 Java開發(fā)環(huán)境的搭建(1)什么是JDK(2)設置環(huán)境變量1.1.3 Java的開發(fā)環(huán)境什么是JDKsun公司將java的開發(fā)工具和運行環(huán)境所涉及到的應用程序和相關文件放在一起,稱之為JDK(java development kit)JDK版本(1)J2EE(Java 2 Platform Enterprise Edition) (2)J2SE(Java 2 Platform Stan

6、dard Edition) (3)J2ME(Java 2 Platform Micro Edition) 下載地址:Http:/1.1.3 Java的開發(fā)環(huán)境JDK的安裝目錄JDK的目錄結(jié)構(gòu)(1)bin目錄javacjava(2)demo目錄1.1.3 Java的開發(fā)環(huán)境何為環(huán)境變量: 在操作系統(tǒng)中定義,可以被操作系統(tǒng)上運行的的應用程序訪問的變量查看環(huán)境變量:在命令行窗口中直接鍵入set查看所有的環(huán)境變量:鍵入set + 變量名查看該變量的值我的電腦屬性高級環(huán)境變量: 關于用戶變量和系統(tǒng)變量中都進行設置的變量1.1.3 Java的開發(fā)環(huán)境設置環(huán)境變量在命令行窗口中鍵入set 變量名=變量值 設

7、置環(huán)境變量(不能鍵入空格),鍵入set 變量名=,取消環(huán)境變量(注:在命令行窗口中設置的環(huán)境變量只對該命令行窗口起作用)在我的電腦屬性高級環(huán)境變量(注:在這里設置的環(huán)境變量對以后啟動的所有應用程序和命令行窗口都起作用,但不會影響已啟動的應用程序和命令行窗口,在用戶窗口中設置的環(huán)境變量需要注銷重新登陸后才起作用)1.1.3Java的開發(fā)環(huán)境環(huán)境變量path當我們執(zhí)行某個命令時,操作系統(tǒng)首先會在當前目錄下查找該命令,如果沒有找到這個命令程序,操作系統(tǒng)則會沿著path中所指定的目錄依次查找,以最先找到的為準查看當前使用的JDK版本 :java version 1.1.4 Java程序開發(fā)基本過程Ja

8、va編程基礎編譯Java程序運行Java程序Java注釋使用Java文檔1.1.4 Java程序開發(fā)基本過程Java編程基礎Java的基本語法格式:所有的java程序都應該寫在類中 class 類的修飾符:public和默認修飾符1.1.4 Java程序開發(fā)基本過程編譯Java程序Javac運行Java程序Java1.1.4 Java程序開發(fā)基本過程Java注釋單行注釋 /多行注釋 /* */文檔注釋 /* */1.1.4 Java程序開發(fā)基本過程使用Java文檔生成Java文檔1.1.4 Java程序開發(fā)基本過程使用Java文檔HTML網(wǎng)頁:優(yōu)點:更新速度快缺點:不支持模糊查詢chm格式的文

9、檔優(yōu)點:支持模糊查詢?nèi)秉c:更新速度稍慢生成Java文檔1.1.5 Java虛擬機的運行過程:加載代碼:類裝載器(classloader)校驗代碼:字節(jié)碼驗證器(Byte Code Verifier)執(zhí)行代碼:解釋器(Interpreter)1.2 標識符、關鍵字和數(shù)據(jù)類型1.2.1 標識符1.2.2 關鍵字1.2.3 數(shù)據(jù)類型1.2.4 常量1.2.5 變量1.2.6 類型轉(zhuǎn)換1.2.1 標識符標識符命名規(guī)則定義:Java對各種變量,方法和類等要素命名時使用的字符序列稱為標識符規(guī)則:標識符應以字母,下劃線,美元符號開頭標識符應以字母,下劃線,美元符號或數(shù)字組成標識符對大小寫敏感,長度無限止合法

10、的標識符: Indentifier、username、user_name、_userName、$username非法的標識符:class、98.3、Hello World 1.2.2 關鍵字abstractdoimplementprivatethisbooleandoubleimportprotectedthrowbreakelseinstanceof publicthrowsbyteextendintreturntransientcasefalseinterfaceshorttruecatchfinallongstatictrycharfianllynativestrictfpvoidcla

11、ssfloatnewsupervolatilecontinuefornullswitchwhiledefaultif package synchronized注:java 無sizeof ,goto, const 關鍵字,但不能用goto const作為變量名1.2.3 數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型類接口數(shù)組數(shù)值型字符型(char)布爾型(boolean)整數(shù)型(byte shortInt long)浮點型(float,double)1.2.4 常量常量:就是持續(xù)不變的值常量類型:整型常量:十進制(12) ,十六進制 (0 x12),八進制(012)長整型常量:13L浮點數(shù)常量:

12、(1) 單精度浮點數(shù) 5.1f,.4f ,2e3f ,0f(2) 雙精度浮點數(shù) 5.1,.4,2e-3,0d布爾常量:true和false 1.2.4 常量字符常量 : a , 8, u0027 r表示接受鍵盤輸入,相當于按下了回車鍵;n是換行;t是制表符,相當于table鍵;b是退格鍵,相當于Back Space;是單引號,而“是雙引號;是一個斜杠“”。字符串常量 :“Hello World“,”123”, Welcome nXXX“null常量 :null常量只有一個值,用null表示,表示對象的引用為空 1.2.5 變量變量概念變量就是系統(tǒng)為程序分配的一塊內(nèi)存單元,用來存儲各種類型的數(shù)據(jù)

13、。先聲明,再使用變量的元素 變量名,變量值,變量的作用范圍變量定義int x=0,y; y=x+3; x和y就是變量1.2.5 變量變量字節(jié)大小及有效取值范圍byte占用一個字節(jié),數(shù)字大小為-2727-1short占用兩個字節(jié),數(shù)字大小為-215215-1 int占用四個字節(jié),數(shù)字大小為-231231-1 long占用八個字節(jié),數(shù)字大小為-263263-1 float占用四個字節(jié),數(shù)字大小為1.4E-453.4E+38 , -1.4E-45-3.4E+38 。用二進制的指數(shù)形式表示一個浮點數(shù)的格式,如:101*22 , 101*2-3double占用八個字節(jié),數(shù)字大小為4.9E-3241.7E

14、+308, -4.9E-324-1.7E+308 。char占兩個字節(jié),數(shù)字大小為0216-1,是unicode編碼。字符的本來面目,我們?yōu)槭裁纯梢灾苯訉⒁粋€數(shù)字賦給字符變量。Boolean占一個字節(jié),有兩種取值,true和false。1.2.5 變量變量作用域變量要先定義,后使用,但不是在變量定義后的語句中一直都能使用前面定義的變量。比如:可以用大括號將多個語句包起來形成一個復合語句,則復合語句中定義的變量只能在定義它的復合語句中使用。局部變量在方法或方法中的代碼塊中定義的變量稱為局部變量成員變量在方法外,在類內(nèi)部定義的變量1.2.5 變量局部變量的定義在方法或方法中的代碼塊中定義的變量稱為

15、局部變量,局部變量在方法或代碼塊被執(zhí)行時創(chuàng)建,在方法或代碼塊結(jié)束時被銷毀。局部變量的初始化局部變量在進行取值操作前必須被初始化,否則會出現(xiàn)編譯錯誤1.2.6 類型轉(zhuǎn)換自動類型轉(zhuǎn)換(也叫隱式類型轉(zhuǎn)換)byte b = 3;int x = b; /b被自動轉(zhuǎn)換為int型強制類型轉(zhuǎn)換(也叫顯式類型轉(zhuǎn)換) byte a; int b; a = (byte)b; /b被強制轉(zhuǎn)換為byte型 1.3 運算符,表達式和語句1.3.1 運算符1.3.2 表達式1.3.3 控制語句1.3.1 運算符何為運算符運算符是一種特殊符號,用以表示數(shù)據(jù)的運算、賦值和比較,一般由一至三個字符組成 。運算符類型算術(shù)運算符賦值

16、運算符比較運算符邏輯運算符位運算符移位運算符1.3.1 運算符1.3.1 運算符算術(shù)運算符的注意問題“+”除字符串相加功能外,還能把非字符串轉(zhuǎn)換成字符串 ,如: “x”+123;的結(jié)果是“x123” 。 如果對負數(shù)取模,可以把模數(shù)負號忽略不記,如:5%-2=1。但被模數(shù)是負數(shù)就另當別論了。對于除號“/”,它的整數(shù)除和小數(shù)除是有區(qū)別的:整數(shù)之間做除法時,只保留整數(shù)部分而舍棄小數(shù)部分。 int x=3510;x=x/1000*1000;實際運行結(jié)果是3000 ,想想為什么? 1.3.1 運算符賦值運算符1.3.1 運算符賦值運算符注意:注1:在JAVA里可以把賦值語句連在一起,如: x = y =

17、 z = 5 ; 在這個語句中,所有三個變量都得到同樣的值5。注2 :x += 3等效于x = x + 3,等于*= ,-=,/=依此類推。1.3.1 運算符比較運算符1.3.1 運算符比較運算符注意:注1:比較運算符的結(jié)果都是boolean型,也就是要么是true,要么是false。注2:比較運算符“=”不能誤寫成“=” 1.3.1 運算符邏輯運算符1.3.1 運算符邏輯運算符注意點注1:邏輯運算符用于對boolean型結(jié)果的表達式進行運算,運算的結(jié)果都是boolean型 。注2:“&”和“&”的區(qū)別在于,如果使用前者連接,那么無論任何情況,“&”兩邊的表達式都會參與

18、計算。如果使用后者連接,當“&”的左邊為false,則將不會計算其右邊的表達式?!皘”和“|”的區(qū)別與“&”和“&”的區(qū)別一樣。1.3.1 運算符位運算符任何信息在計算機中都是以二進制的形式保存的,&,|,除了可以作為邏輯運算符,也可以做為位算符,它們對兩個操作數(shù)中的每一個二進制位都進行運算。只有參加運算的兩位都為1,&運算的結(jié)果才為1,否則就為0。只有參加運算的兩位都為0,|運算的結(jié)果才為0,否則就為1。只有參加運算的兩位不同,運算的結(jié)果才為1,否則就為0。1.3.1 運算符移位運算符 右移 無符號右移1.3.1 運算符移位運算的注意事項及小技巧移位運

19、算符適用類型有byte、short、char、int、long對低于int型的操作數(shù)將先自動轉(zhuǎn)換為int型再移位。對于int型整數(shù)移位ab,系統(tǒng)先將b對32取模,得到的結(jié)果才是真正移位的位數(shù)。例如:a33和a1結(jié)果是一樣的,a32的結(jié)果還是a原來的數(shù)字。對于long型整數(shù)移位時ab ,則是先將移位位數(shù)b對64取模。移位不會改變變量本身的值。如a1;在一行語句中單獨存在,毫無意義 。x1的結(jié)果和x/2的結(jié)果是一樣的,x2和x*4的結(jié)果也是一樣的??傊?,一個數(shù)左移n位,就是等于這個數(shù)乘以2的n次方,一個數(shù)右移n位,就是等于這個數(shù)除以2的n次方。請思考:如何用程序?qū)崿F(xiàn)求2的x次方。答案:y = 11

20、0&b10表達式的運算順序先按照運算符的優(yōu)先級優(yōu)先級相同的,按照約定的結(jié)合方向表達值的值和類型1.3.3控制語句條件控制語句循環(huán)控制語句特殊的循環(huán)流程控制1.3.3控制語句條件控制語句If else 語句的語法:If(布爾表達式)語句或語句塊If(布爾表達式)語句或語句塊else if(布爾表達式)語句或語句塊else語句或語句塊1.3.3控制語句switch語句的語法switch(表達式1)case 常量1:語句break;case 常量2:語句break;default:語句break;1.3.3控制語句switch選擇語句:switch(x)/x只能為int、byte、char、

21、shortcase 1:System.out.println(“Monday”);break;case 2:System.out.println(“Tuesday”);break;case 3:System.out.println(“Wednesday”);break;default:System.out.println(“I dont know”);思考:無break的情況1.3.3控制語句for循環(huán)語句for(初始化表達式;布爾值測試表達式;更改表達式)語句或語句塊;例:for(int i=0;i=10;i+)System.out.println(“i=”+i);1.3.3控制語句whil

22、e循環(huán)while(布爾值)語句或語句塊;注意:while表達式的括號后不能加“;”,否則會 造成不易察覺的無限循環(huán)1.3.3控制語句do while循環(huán)do語句或語句塊;while(布爾測試)注意:while表達式的括號后要加“;”1.3.3控制語句思考:while循環(huán)和do while循環(huán)的不同之處while循環(huán)先判斷循環(huán)條件,再執(zhí)行循環(huán)體do while循環(huán)先執(zhí)行循環(huán)體,再判斷循環(huán)條件1.3.3控制語句break與continue語句break:終止循環(huán)體中的執(zhí)行語句和switch語句,跳轉(zhuǎn)到當前循環(huán)的下一條語句continue:只能用于while、do while、for語句中,終止當前

23、這次循環(huán),執(zhí)行下一次循環(huán)1.3.3控制語句特殊的循環(huán)流程控制break語句do語句;If(條件為真)break;語句while(布爾表達式);1.3.3控制語句特殊的循環(huán)流程控制continue語句do語句;If(條件為真)continue;語句while(布爾表達式);1.4數(shù)組1.4.1 聲明數(shù)組1.4.2 創(chuàng)建數(shù)組1.4.3 數(shù)組初始化1.4.4 數(shù)組中注意的問題1.4.5 多維數(shù)組1.4.1聲明數(shù)組聲明數(shù)組:數(shù)組類型 數(shù)組名Int aaInt aa1.4.2創(chuàng)建數(shù)組創(chuàng)建數(shù)組:數(shù)組名=new 類型名數(shù)組大小aa = new int10;數(shù)組元素:aa0、aa1、aa2aa91.4.3數(shù)組

24、初始化int ia =1,2,3,4; int ia=new int3,4,5; int a5;/聲明數(shù)組時,不能指定其長度,編譯時將出錯 1.4.4數(shù)組中注意的問題空指針異常(數(shù)組未初始化就使用數(shù)組中的元素)數(shù)組越界異常 如何得到數(shù)組長度 所有的數(shù)組的索引均從0開始1.4.4數(shù)組中注意的問題不能改變數(shù)組大小可以使用相同的引用變量去引用另一個全新的數(shù)組1.4.5多維數(shù)組多維數(shù)組,類似棋盤。Java 中的多維數(shù)組,也就是數(shù)組的數(shù)組,1.4.5多維數(shù)組定義多維數(shù)組int xx;xx=new int3; xx0=new int3;xx1=new int2;1.4.5多維數(shù)組多維數(shù)組中元素的引用方式,

25、如:x12。規(guī)則矩陣數(shù)組可以在一條語句中產(chǎn)生,如:int xx=new int23; 多維數(shù)組的靜態(tài)初始化 ,如: int xx=3,2,7,1,5,6; 1.5方法的封裝(功能的封裝)1.5.1 方法的封裝格式1.5.2 方法調(diào)用的過程分析1.5.3 方法的調(diào)用1.5.4 方法的參數(shù)傳遞1.5.1方法的封裝格式返回值類型 函數(shù)名(參數(shù)類型 形式參數(shù)1,參數(shù)類型 形式參數(shù)2,.) 程序代碼 return 返回值;形式參數(shù):在方法被調(diào)用時用于接收外部傳入的數(shù)據(jù)的變量。參數(shù)類型:就是該形式參數(shù)的數(shù)據(jù)類型。返回值:方法在執(zhí)行完畢后返還給調(diào)用它的程序的數(shù)據(jù)。返回值類型:函數(shù)要返回的結(jié)果的數(shù)據(jù)類型。實參

26、:調(diào)用函數(shù)時實際傳給函數(shù)形式參數(shù)的數(shù)據(jù)。如何理解函數(shù)返回值類型為void的情況1.5.2方法調(diào)用的過程分析1.5.3方法的調(diào)用方法調(diào)用的幾種不通情況使用return提前返回1.5.4方法的參數(shù)傳遞基本數(shù)據(jù)類型的參數(shù)傳遞class PassValuepublic static void main(String args)int x =5;change(x);System.out.println(x);public static void change(int x)x = 3;1.5.4方法的參數(shù)傳遞方法的形式參數(shù)相當于方法中定義的局部變量方法的形式參數(shù)在方法調(diào)用結(jié)束時被釋放,不會影響到主程序中同

27、名的局部變量1.5.4方法的參數(shù)傳遞class PassRefint x;public static void main(String args)PassRef obj = new PassRef();obj.x = 5;change(obj);System.out.println(obj.x);public static void change(PassRef obj)obj.x = 3;課后練習編寫程序:輸入分數(shù),判斷分數(shù)的級別,大于等于85,輸出結(jié)果”優(yōu)秀”,大于等于75,輸出結(jié)果”良好”,大于等于60,輸出結(jié)果”及格”,否則不及格輸入一個數(shù),判斷是否被6整除,被6整除, 顯示”被6整除

28、”,否則顯示”不能被6整除1.循環(huán)輸入五個數(shù),顯示最大數(shù)小結(jié)1.1 Java語言入門1.2 標識符、關鍵字和數(shù)據(jù)類型1.3 運算符,表達式和語句1.4 數(shù)組1.5 方法的封裝2 面向?qū)ο? 面向?qū)ο蟊菊率墙榻BJava面向?qū)ο蟮母拍睿v解面向?qū)ο蟮姆庋b性,多態(tài)性和繼承性,以及抽象類、嵌套類。課程內(nèi)容:2.1面向?qū)ο蟮幕靖拍?.2類與封裝2.3static關鍵字2.4內(nèi)部類2.5類的繼承2.6final關鍵字2.7抽象類與接口2.8異常2.9包2.1 面向?qū)ο蟮幕靖拍?.1.1 面向?qū)ο?.1.2 對象2.1.3 類2.1.4 面向?qū)ο蟮亩x2.1.4 OOP詞匯表2.1.1面向?qū)ο?面向?qū)ο?/p>

29、(Object Oriented,OO)是當前計算機界關心的重點,它是90年代軟件開發(fā)方法的主流面向?qū)ο蟮母拍詈蛻靡殉搅顺绦蛟O計和軟件開發(fā),擴展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應用結(jié)構(gòu)、應用平臺、分布式系統(tǒng)、網(wǎng)絡管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領域。 2.1.2對象 (1)對象。 對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。 (2)對象的狀態(tài)和行為。 對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。 對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。 對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和

30、操作封裝于對象的統(tǒng)一體中 2.1.3類 類:具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。 類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。 類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。2.1.3類 類的結(jié)構(gòu)。 在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關系。通常有兩種主要的結(jié)構(gòu)關系,即一般-具體結(jié)構(gòu)關系,整體-部分結(jié)構(gòu)關系。 一般具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關系,或者是“is a”關系。 整體部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關系是一種“與”關系,或者是“has a”關系。 2.1.3類消

31、息和方法 對象之間進行通信的結(jié)構(gòu)叫做消息。在對象的操作中,當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數(shù)加以說明,參數(shù)可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。 類中操作的實現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)、方法體。2.1.4面向?qū)ο蟮亩x 簡單的說,面向?qū)ο笤O計是一種把重點放在數(shù)據(jù)(對象)和對象接口上的編程技術(shù)從根本上說,只要對象能夠滿足你的需求,就不必關心它的功能到底如何實現(xiàn)。在面向?qū)ο蟪绦蛟O計(OOP)中,唯一關心的就是對象的外在表現(xiàn)

32、2.1.5OOP詞匯表類:class實例:instance封裝:encapsulation實例字段:instance field方法:method狀態(tài):state擴展:extend根超類:cosmic superclass繼承:inheritance(通過擴展一個類來獲得新類)課后練習面向?qū)ο蟮亩x?面向?qū)ο蠛兔嫦蜻^程的區(qū)別,請舉例說明?面向?qū)ο蟮膬蓚€注意點?2.2類與封裝2.2.1 類與對象2.2.2 對象的創(chuàng)建、使用,比較2.2.3 匿名對象2.2.4 類設計2.2.5 實現(xiàn)類的封裝性2.2.6 構(gòu)造方法2.2.7 This引用2.2.8 方法的重載2.2.1類與對象類:類就是對某一事務的

33、描述,是抽象的、概念上的定義,如:汽車設計圖對象:對象是實際存在的該類事務的個體,也稱為實例(instance),如:按汽車設計圖設計出來的每一輛汽車2.2.1類與對象類可以將數(shù)據(jù)和方法封裝在一起,數(shù)據(jù)表示類的屬性,方法表示類的行為Class 類名成員屬性(成員變量)成員方法2.2.1類與對象關于成員變量和局部變量同名的問題class Personint age;void shout()int age = 60;System.out.println(“my age is ” + age);2.2.2對象的創(chuàng)建、使用,比較對象的創(chuàng)建:類名 對象名=new 類名();例:Person p = ne

34、w Person();變量p是person對象的一個應用,在棧內(nèi)存中通過new關鍵字創(chuàng)建的person對象在堆內(nèi)存中2.2.2對象的創(chuàng)、使用,比較對象的使用:對象.屬性對象.方法()例:class TestPersonpublic static void main(String args)Person p1 = new Person();Person p2 = new Person();p1.age = 18;p1.shout();p2.shout();2.2.2對象的創(chuàng)建與使用對象只能在其有效的生命周期內(nèi)被使用:當離開對象所在的代碼塊后,對象就會變成垃圾設置對象的引用為null,對象也會變成

35、垃圾2.2.2對象的創(chuàng)建、使用,比較對象的比較有兩種方式比較對象,即和equals()方法用于比較引用是否指向同一個對象equals()用于比較兩個對象的內(nèi)容是否一致2.2.3匿名對象未指定應用的對象即匿名對象Person p = new Person();p.shout();new Person().shout();用匿名對象改寫剛才的程序2.2.3匿名對象使用匿名對象的兩種情況如果一個對象只需要進行一次方法調(diào)用,那么可以使用匿名對象將匿名對象作為一個參數(shù)傳遞給一個方法,如:public void getPerson(Person p);getPerson(new Person();2.2.

36、4類設計識別類的一個簡單經(jīng)驗就是尋找問題分析中的名詞比如:在訂單處理系統(tǒng)中有這樣一些名詞:訂單(order)、送貨地址(address)、貨款(payment)、帳戶(account)根據(jù)這些名詞,我們就可以創(chuàng)建order、address、 payment、 account等類2.2.4類設計確定類中的方法(函數(shù))通過尋找和名詞相關的動詞來確定方法比如:物品被添加進訂單,訂單被運送或取消貨款被支付課后練習設計一教學管理系統(tǒng),要求實現(xiàn)學生信息的管理和課程的管理,請列出所需的類,類的屬性及方法2.2.5實現(xiàn)類的封裝性封裝的定義封裝的目的2.2.5實現(xiàn)類的封裝性封裝的定義將類的成員變量聲明為priv

37、ate,再提供一個或多個public方法實現(xiàn)對該成員變量的修改或訪問,這種方式稱為封裝2.2.5實現(xiàn)類的封裝性封裝的目的隱藏類的實現(xiàn)細節(jié)通過定制好的方法訪問數(shù)據(jù),可以方便地加入控制邏輯,限制對屬性的不合理操作(如對數(shù)據(jù)進行檢查)便于修改,增強代碼的可維護性2.2.6構(gòu)造方法構(gòu)造方法(構(gòu)造函數(shù)、構(gòu)造器)的定義構(gòu)造方法特征構(gòu)造方法為什么類同名構(gòu)造方法的細節(jié)2.2.6構(gòu)造方法構(gòu)造方法的定義:是類的一種特殊方法,java中每個類都有構(gòu)造方法,它的功能是類的實例初始化狀態(tài)2.2.6構(gòu)造方法構(gòu)造方法的特征它具有和類相同的名稱它不包含返回值它不能在方法中用return語句返回一個值2.2.6構(gòu)造方法構(gòu)造方法

38、為什么和類同名?因為構(gòu)造方法有java編譯器負責調(diào)用,編譯器必須知道哪個是構(gòu)造方法,采用與類同名的方式是最簡單合理的Person p3 = new Person(“Tom”,18);都干了什么1. 定義一個Person類型的引用變量p3和一個Person類的實例對象2. 調(diào)用構(gòu)造方法,在構(gòu)造方法內(nèi)的代碼執(zhí)行前,先對成員變量進行顯式初始化,即執(zhí)行 private String name = unknown;private int age = -1;3. 執(zhí)行構(gòu)造方法中的代碼4. 把新創(chuàng)建的Person對象賦給p3引用變量2.2.6構(gòu)造方法構(gòu)造方法的幾個細節(jié)每個java類中至少有一個構(gòu)造方法關于默

39、認構(gòu)造方法private修飾的構(gòu)造方法2.2.7This引用this在類內(nèi)部表示被構(gòu)造的類對象本身使用this引用的幾種情況2.2.8方法的重載(overload)何為方法重載構(gòu)造器重載成員方法重載2.2.8方法的重載(overload)方法的重載就是在同一個類中允許同時存在一個以上的同名函數(shù),只要它們的參數(shù)個數(shù)或類型不同即可。1)方法名相同2)參數(shù)必須不同3)返回類型可以相同,可以不相同2.2.8方法的重載(overload)構(gòu)造方法的重載成員方法的重載課后練習定義一個Person類,在類中定義三個構(gòu)造器,默認構(gòu)造器、帶name參數(shù)的構(gòu)造器和帶name、age參數(shù)的構(gòu)造器(需使用this來調(diào)

40、用構(gòu)造器)編程輸出*2.3 static關鍵字2.3.1 靜態(tài)屬性2.3.2 靜態(tài)方法2.3.3 static方法的注意點2.3.4 靜態(tài)代碼塊2.3.5 單態(tài)設計模式2.3.6 理解main方法的語法2.3.1靜態(tài)屬性靜態(tài)成員變量static String country=“China”;靜態(tài)成員變量也稱作類成員靜態(tài)成員變量的兩種訪問方式 類名.成員對象名.成員2.3.1靜態(tài)屬性不能把方法體內(nèi)的變量聲明為staticfun()static int I = 0;上訴聲明是錯誤的2.3.1靜態(tài)屬性static變量在類被載入時就存在,被所有的對象實例共享統(tǒng)計產(chǎn)生了多少類的實例對象:class Ap

41、rivate static int count = 0;public A()count = count +1;2.3.2靜態(tài)方法靜態(tài)成員方法也稱作類方法使用類名就可以直接調(diào)用static方法,不必創(chuàng)建類的實例對象2.3.3static方法的注意點static方法中只能調(diào)用同類中的其他static成員(變量或方法),不能訪問類中的非靜態(tài)成員static成員不能以任何方式引用this和super關鍵字main方法是static的2.3.4靜態(tài)代碼塊類中可以使用不包含在任何方法體中的靜態(tài)代碼塊,當類被載入時,靜態(tài)代碼塊自動被執(zhí)行,且只執(zhí)行一次,靜態(tài)代碼塊常用來進行類屬性的初始化2.3.4靜態(tài)代碼塊c

42、lass StaticCodestatic String coutry;coutry = China;System.out.println(staiccode is loading);2.3.5單態(tài)設計模式單態(tài)設計模式:采取一定的方式保證在整個軟件系統(tǒng)中,對某個類只能存在一個對象實例,并且該類只提供一個取得其對象實例的方法2.3.5單態(tài)設計模式public class TestSingleprivate static final TestSingle onlyOne = new TestSingle();public static TestSingle getTestSingle()retur

43、n onlyOne;private TestSingle();2.3.6理解main方法的語法由于Java虛擬機需要調(diào)用類的main方法,所以是public的Java虛擬機在執(zhí)行main方法是不必創(chuàng)建對象,所以該方法是static的Main方法有一個String類型的數(shù)組參數(shù),用來保存執(zhí)行Java命令時傳遞給所運行的類的參數(shù)2.3.6理解main方法的語法public class TestMainpublic static void main(String args)for(int i=0;iargs.length;i+)System.out.println(argsi);使用java Tes

44、tMain 1 2 3 “11 22”運行課后練習寫一個程序,統(tǒng)計產(chǎn)生了多少類的實例對象2.4內(nèi)部類2.4.1 內(nèi)部類的定義2.4.2 內(nèi)部類2.4.3 內(nèi)部類的注意點2.4.4 關于static內(nèi)部類2.4.5 內(nèi)部類中的變量名2.4.6 內(nèi)部類如何被外部類引用2.4.7 方法中的內(nèi)部類2.4.1 內(nèi)部類的定義在一個類內(nèi)部定義的類就是嵌套類,也叫內(nèi)部類或內(nèi)置類內(nèi)部類可以訪問嵌套他的類的成員,包括private的成員,但內(nèi)部類的成員卻不能被嵌套它的類直接訪問2.4.1 內(nèi)部類的定義內(nèi)部類的定義和普通類沒什么區(qū)別內(nèi)部類可以被聲明為private或protected的2.4.2 內(nèi)部類class

45、Outerint outer_i =100;void test()Inner in = new Inner();in.display();class Inner /int outer_i =90;void display()System.out.println(display: outer_i +outer_i);2.4.2 內(nèi)部類class InnerClassDemopublic static void main(String args)Outer outer = new Outer();outer.test();2.4.2 內(nèi)部類class Outerint outer_i =100;void test()Inner in = new Inner();in.display();class Innerint y=

溫馨提示

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

評論

0/150

提交評論