版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java 簡介教學(xué)目標(biāo)了解Java語言的特點理解Java程序類型理解并掌握Java運行環(huán)境學(xué)習(xí)Java開發(fā)環(huán)境的搭建并了解JDK的常用工具包。初識Java程序,了解Java運行原理。Java之父出生于加拿大,取名James天文系臨時程序員在IBM設(shè)計第一代工作站自制游戲機,偷學(xué)編程硅谷大會帶動Java浪潮開發(fā)了Sun News窗口系統(tǒng)“綠色計劃”與Oak,更名為JavaOakJAVA版本分類Java特點特點Java 的特點:Java是 一 種 簡 單 的 面 象 對 象 的 分布 式 的 解 釋 的 健 壯 的 安 全 的 結(jié) 構(gòu) 中 立 的 可 移 植 的 性 能 很優(yōu) 異 的 多 線 程
2、的 動 態(tài) 的 語 言。簡單性- Java 設(shè)計人員刪除了C+ 中許多復(fù)雜的功能,如指針操縱和運算符重載等面向?qū)ο? 在 Java 中任何東西都是對象。因此,重點集中在數(shù)據(jù)、應(yīng)用程序中操作 對象的方法以及過程上分布式- Java 可用于開發(fā)能夠在多個平臺、操作系統(tǒng)和圖形用戶界面之間移植的應(yīng)用程序解釋性-java解釋器可以在任何移植了java解釋器的機器上執(zhí)行Java字節(jié)碼健壯性- Java 在編譯和解釋時都會檢查代碼安全性- Java 提供了用于執(zhí)行程序的受控環(huán)境,以及多層次的安全控制結(jié)構(gòu)中立-java編譯器通過生成與特定計算機體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令來實現(xiàn)多線程- Java 程序使用稱為“多
3、線程”的進程同時處理多項任務(wù)高性能、可移植、 動態(tài)性搭建開發(fā)環(huán)境SUN官方網(wǎng)站/javase/downloads/index.jsp 安裝Java JDK安裝過程雙擊安裝包選擇安裝目錄選擇安裝組件結(jié)束安裝了解JDK了解JDK安裝目錄 :bin目錄:存放可執(zhí)行文件;lib目錄:存放Java的類庫文件;include目錄:存放用于本地方法的文件; demo目錄:存放演示程序;jre目錄:存放Java運行環(huán)境文件; Java DocumentationJava文檔涵蓋整個Java平臺,為開發(fā)者提供便利,以HTML形式展現(xiàn)。Bin目錄javac文件。Javac文件是Java語言的編譯器。java文件。
4、Java文件是java語言的解釋器 。appletviewer文件。Appletviewer文件是Java Applet的解釋器。jar文件。Jar文件是java語言壓縮工具。配置環(huán)境變量單擊右鍵選擇高級選擇環(huán)境變量選擇高級選擇編輯添加路徑Java虛擬機可運行Java字節(jié)碼的虛擬計算機系統(tǒng) 它有一個解釋器組件,可以實現(xiàn)Java字節(jié)碼和計算機操作系統(tǒng)之間的通信用戶USER字節(jié)碼程序JVM (Java 虛擬機)操作系統(tǒng)硬 件Java虛擬機的運行過程編譯時.java(源代碼).class(字節(jié)碼)運行時解釋器硬件網(wǎng)絡(luò)字節(jié)碼校驗器類加載器JIT代碼生成器保存文件在保存文件時,文件名要與程序中的publ
5、ic class的類名一致,這里應(yīng)為HelloWorld.java。文件名的大小寫最好也要保持與類名一致 開發(fā)Java程序的步驟創(chuàng)建Java源程序Java源程序一般用java作為擴展名,是一個文本文 件,用Java語言寫成,可以用任何文本編輯器創(chuàng)建 與編輯;編譯源程序Java編譯器,“javac”,讀取你的Java源程序并翻譯 成Java虛擬機能夠明白的指令集合,且以字節(jié)碼的 形式保存在文件中。通常,字節(jié)碼文件以class作為 擴展名;運行class(字節(jié)碼)文件Java解釋器讀取字節(jié)碼,取出指令并且翻譯成計算 機能執(zhí)行的代碼,完成運行過程;Java 程序運行原理 HelloWorld.jav
6、aHelloWorld.class(010101100010. .)Native code本地代碼(010101100010. .)Java源代碼Java字節(jié)碼(byte code)本地代碼javac.exe Java編譯器java.exe Java解釋器Java 平臺無關(guān)性 *.java源代碼*.class字節(jié)碼Javac.exeJVMWindows平臺JVMLinux平臺JVMUnix平臺Java.exe編譯時運行時Java 半編譯半解釋 *.java*.class編譯裝載檢驗字節(jié)碼解釋運行硬件Javac運行Class world關(guān)鍵字class聲明了類的定義 HelloWorld是描述類
7、名的標(biāo)識符 整個類的定義包括其所有成員都是在一對大括號中(即 之間)定義完成的,這標(biāo)志著類定義塊的開始和結(jié)束 Main()這是一個main()方法,程序從這里開始執(zhí)行 所有的Java應(yīng)用程序都必須有一個main()方法main()方法是所有Java應(yīng)用程序的起始點 注意:Java是區(qū)分大小寫的,所以main與Main不同 static &public&void關(guān)鍵字public是一個訪問修飾符,它控制類成員的可見度和作用域關(guān)鍵字void告訴編譯器在執(zhí)行此main()方法時,它不會返回任何值 關(guān)鍵字static允許調(diào)用main()方法,而無需創(chuàng)建類的實例 String args String a
8、rgs是傳遞給main()方法的參數(shù) Args是String類型的數(shù)組 String類型的對象存儲字符串 Println&system&outPrint()方法在屏幕上輸出以參數(shù)方法式傳遞給它的字符串 System是一個預(yù)定義的類,它提供對系統(tǒng)類的訪問 out是連接到控制臺的輸出流 Java 編碼慣例-1包名package banking.domain;類名class SavingsAccount接口名interface Account方法名balanceAccount()變量名currentCustomer常量名HEAD_COUNTMAXIMUM_SIZEJava 編碼慣例-2縮進規(guī)則使用注
9、釋-說明類/屬性/方法的功能,參數(shù)的作用運算符與運算數(shù)間用空格間隔總結(jié)Java環(huán)境搭建Java運行原理Java的程序結(jié)構(gòu) 數(shù)據(jù)類型 運算符 控制流程語句 數(shù)組 方法Java語言基礎(chǔ)主要內(nèi)容理解Java程序的基本結(jié)構(gòu)理解數(shù)據(jù)類型掌握運算符運用控制流語句掌握數(shù)組掌握方法標(biāo)識符、關(guān)鍵字、常量、變量標(biāo)識符變量,函數(shù),類,對象的名稱都是標(biāo)識符,以字符或”_”,”$”開頭 , 長度無限制的。 關(guān)鍵字49個關(guān)鍵字 常量-程序在運行期間不能改變的量 普通常量(常數(shù)) -true,false ,12,43.35,你好!” 標(biāo)識符常量(常值變量) -final關(guān)鍵字定義 變量(轉(zhuǎn)下一頁)格式:type varNa
10、me,varName2;定義變量varName type varName=value; 定義變量varName,并賦值value 標(biāo)識符、關(guān)鍵字、常量、變量規(guī)則和慣例使用一個變量之前要對變量的類型加以聲明一個變量的聲明就是一條完整的Java語句,所以在結(jié)尾使用分號變量必須以一個字母開頭變量名區(qū)分大小寫變量名的長度基本沒有限制變量名不能使用Java的關(guān)鍵字可在一條語句中進行多個變量的聲明,不同變量之間用逗號分隔注釋三種注釋方法:1:多行注釋/* */ 2:單行注釋以/開始3:文檔注釋/* */目的: 允許程序員加入備注 ,對程序做相關(guān)解釋強烈建議給給程序加注釋Java 語言的基礎(chǔ)知識數(shù)據(jù)類型變量
11、運算符控制流語句Java 塊變量是存儲數(shù)據(jù)的基本單元 。數(shù)據(jù)類型確定要存儲在內(nèi)存中的數(shù)據(jù)的類型。運算符是一個符號,用于操作一個或多個參數(shù)以得出結(jié)果。程序是按順序執(zhí)行的??刂屏髡Z句允許改變此順序。數(shù)據(jù)類型基本(簡單)數(shù)據(jù)類型booleanchar 整數(shù)類型byteshortintlong浮點類型floatdouble引用(復(fù)合)數(shù)據(jù)類型classinterface數(shù)組數(shù)據(jù)轉(zhuǎn)換類型自動類型轉(zhuǎn)換強制類型轉(zhuǎn)換將一種類型的變量賦給另 一種類型的變量時,只要 滿足以下條件,就會發(fā)生 自動類型轉(zhuǎn)換:兩種類型兼容;目標(biāo)類型大于源類型;byte-short-int-long-float-double強制轉(zhuǎn)換用于
12、顯式類型 轉(zhuǎn)換。如果被轉(zhuǎn)換的值 的數(shù)據(jù)類型大于其目標(biāo) 類型,就會丟失部分信 息 類型強制轉(zhuǎn)換使程序?qū)⒆兞恳暈槟撤N類型,盡管此變量中包含的是另一類型的數(shù)據(jù) 由高-低 示例: float c = 34.89675f; int b = (int) c + 10;/ 將 c 轉(zhuǎn)換為整型類型提升規(guī)則兩種類型兼容;目標(biāo)類型大于源類型; 例如: byte、char和 short 型值可提升為 int 型對于表達式如果一個操作數(shù)為 long 型,則整個表達式提升為 long 型如果一個操作數(shù)為 float 型,則整個表達式提升為 float 型如果一個操作數(shù)為 double 型,則整個表達式提升為 doubl
13、e 型運算符運算符描述示例算術(shù)運算符算術(shù)運算符使用數(shù)字操作數(shù)。這些運算符主要用于數(shù)學(xué)計算+, -, *, % 等關(guān)系運算符關(guān)系運算符用于測試兩個操作數(shù)之間的關(guān)系。使用關(guān)系運算符的表達式的結(jié)果為 boolean 型=, =, 、=、=、= 和 != 5. 邏輯運算符,如 &、|、&、| 6.條件運算符和賦值運算符,如 ? :、=、*=、/=、+= 和 -= 控制流語句語句:Java的每條語句以分號(;)結(jié)束,語句可以是單一的一條,也可以是用括起來的語句塊(復(fù)合語句)。 塊作用域塊定義著變量的作用域。一個塊可以嵌套另一個塊。不允許在兩個嵌套的塊內(nèi)聲明兩個完全相同的變量分支語句:根據(jù)條件值和表達式的
14、值選擇執(zhí)行不同的序列,而跳過某些語句不執(zhí)行。條件語句:if(布爾表達式)else多重分支: switch(整型表達式)case :常數(shù) break;例子:SwitchDemo.java循環(huán)語句:反復(fù)執(zhí)行一段代碼,直到滿足終止循環(huán)條件為止。一個循環(huán)應(yīng)包括如下部分:循環(huán)的初始化,程序循環(huán)體,迭代部分,終止部分for(初始表達式;條件表達式;增量表達式)三個表達式的任意一個都可以為空或者三個都為空。此應(yīng)用最多,多用于確定次數(shù)的循環(huán)。While(布爾表達式) 多用于事先不知道循環(huán)次數(shù)的情況. 先判斷,后執(zhí)行do while(布爾表達式); 適用情況同上,不常用。先執(zhí)行,后判斷控制流語句轉(zhuǎn)移語句brea
15、k在switch語句中,break語句用來終止switch語句的執(zhí)行在循環(huán)語句中,break語句用來退出循環(huán),如出現(xiàn)在內(nèi)層循環(huán),只是距離當(dāng)前層與label語句結(jié)合,使程序從label語句標(biāo)明的代碼塊處開始執(zhí)行。例:BreakDemo.javacontinue使程序跳過循環(huán)體中隨后的語句,直接跳到循環(huán)體的頭部開始新的循環(huán)格式:continue label; 例子:ContinueDemo.javareturn 格式: return 表達式 ; 當(dāng)被調(diào)用方法有返回值時,返回一個值給調(diào)用者。返回值與返回類型要一致。注釋語句/ 單行注釋/*.*/ 多行注釋/* .*/ 文檔注釋數(shù)組數(shù)組:是各數(shù)據(jù)類型構(gòu)
16、造的數(shù)據(jù)序列,數(shù)組的每個元素具有相同的數(shù)據(jù)類型,可以通過一個統(tǒng)一的數(shù)組名和下標(biāo)惟一確定數(shù)組中的元素。屬于復(fù)雜數(shù)據(jù)類型數(shù)組是固定的不能擴展可以存儲基本數(shù)據(jù)類型或?qū)ο笸ㄟ^數(shù)組名和下標(biāo)可以訪問各元素,下標(biāo)從0開始數(shù)組的聲明(一維)數(shù)組的聲明包括數(shù)組名和所包含的元素類型通用的一維數(shù)組的聲明格式是:數(shù)據(jù)類型數(shù)組名; 或數(shù)據(jù)類型 數(shù)組名;舉例: int array_int ; String str;注意:可以存儲基本數(shù)據(jù)類型或?qū)ο?接口聲明中不用寫元素個數(shù)數(shù)組名符合標(biāo)示符規(guī)定創(chuàng)建數(shù)組創(chuàng)建數(shù)組:利用new 來為數(shù)組型變量分配內(nèi)存空間格式:數(shù)組名=new 數(shù)組元素類型元素個數(shù)舉例: array_int=new
17、 int10;注意:必須分配內(nèi)存后才能使用數(shù)組兩步可以合并,如: String str=new String10;數(shù)組初始化可以在聲明數(shù)組時給數(shù)組元素一個初始值舉例: int array_int=1,2,3,4,5,6; String str=“we”,”are”,good”;注意:創(chuàng)建數(shù)組后,系統(tǒng)會給每個元素一個默認值可以不指定數(shù)組大小對象數(shù)組的初始化,如: people peo=new people(),new people();數(shù)組元素的使用通過下標(biāo)訪問數(shù)組元素,而不能只通過數(shù)組名訪問整個數(shù)組舉例: array_int0=1;注意:下標(biāo)的起始位置為0,若越界將產(chǎn)生異常用數(shù)組的屬性leng
18、th可得數(shù)組的長度,如a.length一維數(shù)組小結(jié)可以使用以下三種方式聲明數(shù)組(一維):數(shù)據(jù)類型 標(biāo)識符 ; /僅聲明數(shù)據(jù)類型 標(biāo)識符 = new 數(shù)據(jù)類型大?。?/聲明和創(chuàng)建數(shù)據(jù)類型 標(biāo)識符 = 值 1,值 2,值 N ;/聲明,創(chuàng)建和初始化通過下標(biāo)訪問數(shù)組元素,而不能只通過數(shù)組名訪問整個數(shù)組:numbers.lengthnumbers0聲明數(shù)組(二維)通用的二維數(shù)組的聲明格式是: 元素類型 數(shù)組名; 或 元素類型 數(shù)組名;舉例: float a; people peo注意:理解為數(shù)組的數(shù)組總結(jié)Java 中的數(shù)據(jù)類型分為兩種:原始數(shù)據(jù)類型和引用數(shù)據(jù)類型變量是存儲數(shù)據(jù)的基本單元數(shù)組用于將相同數(shù)
19、據(jù)類型的多項數(shù)據(jù)存儲在連續(xù)的內(nèi)存單元中Java 提供各種類型的運算符Java 支持用作控制語句的各種編程結(jié)構(gòu)面向?qū)ο缶幊?面向?qū)ο缶幊倘绾螌W(xué)好Java如何寫類及創(chuàng)建對象面向?qū)ο缶幊堂嫦蜻^程與面向?qū)ο竺嫦驅(qū)ο蟮幕靖拍铑?、對象、成員數(shù)據(jù)、成員方法、繼承、接口面向?qū)ο缶幊痰奶卣鞒橄蠓庋b繼承多態(tài)返回如何學(xué)好Java只關(guān)心類和對象養(yǎng)成好的書寫風(fēng)格和命名慣例養(yǎng)成查找API的習(xí)慣網(wǎng)絡(luò)資料/ / 返回如何寫類及創(chuàng)建對象類的聲明成員數(shù)據(jù)成員方法構(gòu)造方法類的實例化-對象返回封裝一個學(xué)生信息,包括學(xué)生的Id,姓名,年齡,住址,聯(lián)系電話。類的聲明類是Java語言編程的基本元素,一類定義了一個對象的結(jié)構(gòu)和它的功能接口
20、類是設(shè)計對象的藍圖,它描述了將要產(chǎn)生的對象的特征和行為類的命名規(guī)范格式:修飾符 class 類名成員數(shù)據(jù)(變量);成員方法(函數(shù))修飾符:public, final/abstract返回類的命名規(guī)范類名應(yīng)該有意義類名應(yīng)該是名詞類名的首字母應(yīng)該大寫若兩個單詞,每一單詞的首字母都大寫返回成員數(shù)據(jù)(變量)表明對象的狀態(tài),也稱為實例變量定義的格式:修飾符 數(shù)據(jù)類型 變量名;修飾符:final,private,protected,public,static數(shù)據(jù)類型:基本數(shù)據(jù)類型,數(shù)組,類,接口變量名:名詞并有意義首字母小寫,多個單詞組合時,第二個單詞首字母要大寫不能為Java的關(guān)鍵字如不賦值,符合默認值
21、條件,運行時自動初始化,否則,編譯不能通過返回成員方法(函數(shù))類的方法實現(xiàn)了類所具有的行為,其他對象可以根據(jù)類的方法對類進行訪問。定義的格式:修飾符 返回類型 方法名(參數(shù)列表) 修飾符:除了abstract,synchronized,native外,其他修飾與成員變量的一樣。返回類型:基本數(shù)據(jù)類型,數(shù)組,類,接口,void方法名:可以是任何一個有效的標(biāo)識符動+名字并有意義首字母小寫,多個單詞組合時,第二個單詞首字母要大寫不能為Java的關(guān)鍵字參數(shù)列表:可以基本數(shù)據(jù)變量,也可以數(shù)組,類,接口變量前者:傳值后者:傳引用返回構(gòu)造方法(函數(shù))它是一個特殊的成員方法。它是對象被創(chuàng)建時初始對象的方法。即
22、用來構(gòu)建對象的方法。特征:必須與類名完全一樣沒有返回類型如省略,Java會自動調(diào)用默認的構(gòu)造方法,即無參的構(gòu)造方法一般做初始化成員數(shù)據(jù)的工作返回main方法-執(zhí)行類的入口任何一個直接被調(diào)入java解釋器類,在運行時Java解釋器首先找這個方法main方法是程序的入口main方法的寫法的固定不變的public static void main(String args)返回類的實例化對象將類實例化就生成對象。通過消息激活指定的某個對象的方法以改變其狀態(tài)或產(chǎn)生一定的行為,從而完成某一任務(wù)Java 語句中,使用new操作符來對類進行實例化。格式:type objectName = new 構(gòu)造方法(參
23、數(shù)列表)type:對象的類型objectName:對象名new運算符為對象分配內(nèi)存空間,實例化一個對象返回對象創(chuàng)建和使用一個對象的生命周期包括三個階段:生成Java提供new操作符來創(chuàng)建對象使用Java用點“.”操作符來實現(xiàn)對類成員變量和成員方法的訪問。返回方法重載 this的使用對象的生命周期與垃圾收集器返回方法重載重載:在一個類的定義中有多個名稱相同的方法,但每個方法的參數(shù)順序,參數(shù)類型,參數(shù)個數(shù)不同.重載反映了現(xiàn)實世界的變化。分為:成員方法重載構(gòu)造方法重載返回構(gòu)造方法重載-代碼演示public class AA()A(int x)A(int x,String m)A(String x,i
24、nt m)public static void main(String s)A a1=new A();a1=new A(10);a1=new A(10,”hello”);a1=new A(“hello”,10);成員方法重載-代碼演示public class Avoid f()int f(int x)boolean f(int x,String m)private void f(String x,int m)public static void main(String s)A a1=new A();a1.f();a1.f(10);a1.f(10,”hello”);a1.f(“hello”,10
25、);this的使用在構(gòu)造方法中的使用本類構(gòu)造方法的相互調(diào)用在成員方法中的使用成員數(shù)據(jù)與局部變量重名時使用返回在構(gòu)造方法中的使用public classs AA()this(10,20);/代碼 A(int x,int y)/代碼在成員方法中的使用public classs A int x;int y;A()this(10,20);/代碼 A(int x,int y)this.x=x;this.y=y;看看結(jié)果是多少?public class Aint x=10;A()x=30;int x=40;x=10;System.out.println(x);System.out.println(this
26、.x);對象的生命周期與垃圾收集器使用new關(guān)鍵字調(diào)用構(gòu)建函數(shù),對象即刻產(chǎn)生如果沒有任何引用指向該對象時,對象可能會垃圾收集器回收掉當(dāng)垃圾收集器回收對象時,先調(diào)用finalize()方法,此時對象生命結(jié)束示例class A public void finalize() System.out.println(“a delete”)class Test public static void main(String s) A a1=new A(); A a2=new A(); a1=a2; A a3=a1; a1=null; a2=null; a3=null; /問6-10行被運行時是否有對象可能被
27、回收 System.gc() 通知垃圾回收器class A public void finalize() System.out.println(“a delete”)class Test public static void main(String s) A a1=new A(); A a2=new A(); a1=a2; System.gc(); A a3=a1; a1=null; a2=null;System.gc(); 繼承父 類 子類 父類/子類是相對的Cow類Lion類Tiger類Animals類Carnivorous類Herbivorous類Coat類繼承的特點繼承的特點具有層次結(jié)
28、構(gòu)子類繼承了父類的屬性和方法繼承的優(yōu)點繼承的優(yōu)點代碼的可重用性父類的屬性和方法可用于子類設(shè)計應(yīng)用程序變得更加簡單可以輕松地自定義子類繼承Java當(dāng)中,Java的所有類都有是直接或間接地繼承Object類。被繼承的類稱為父類,繼承而得到的類稱為子類子類繼承父類的所有成員變量和方法,同時可以修改父類的變量或重寫父類的方法,并添加新的變量和方法,這叫擴展。類的繼承是通過在類的定義過程中,用關(guān)鍵字extends來說明.一次只能繼承一個類,即單重繼承。格式:修飾符 class 類的名字 extends 父類返回繼承的實現(xiàn)class EmployeeString name;float salary=200
29、0f;public float getSalary()return salary; class Manager extends Employeeint bouns;public void setBouns(int b) bouns=b; public static void main(String s) Manager m=new Manager(); m.setBouns(1000); float fs=m.getSalary()+m.bouns; System.out.println(fs); 繼承過程中的重寫當(dāng)子類的成員(數(shù)據(jù)/方法)與父類的同名(參數(shù)完全一樣)時,子類的會隱藏父類的成員
30、變量/成員方法,即發(fā)生了重寫。子類繼承父類后可訪問父類中公共類型和保護類型的成員變量或方法不能被聲明為私有類型的成員變量或方法繼承過程中的數(shù)據(jù)重寫Class Aint x=5; Class B extends Aint x=10; int getX()return x; public static void main(String s)B b=new B();b.getX();/?當(dāng)在子類中定義了一個與父類完全一樣的數(shù)據(jù)成員時,在子類中將隱藏這個父類成員,即在子類中缺省將不能訪問這個父類成員繼承過程中的方法重寫Class Avoid f() System.out.println(“A f()”
31、);Class B extends Avoid f() System.out.println(“B f()”);public static void main(String s)B b=new B(); b.f();/?super關(guān)鍵字的使用 解決隱藏與重寫 子類在隱藏父類的成員變量或重寫了父類的方法以后,有時要訪問被重寫的方法或隱藏的成員,Java提供super關(guān)鍵字來實現(xiàn)對父類的訪問顯示調(diào)用父類構(gòu)造方法繼承過程中的數(shù)據(jù)重寫Class Aint x=5; Class B extends Aint x=10; int getX()retunr x+super.x; public static
32、void main(String s),B b=new B();b.getX();/?當(dāng)在子類中定義了一個與父類完全一樣的數(shù)據(jù)成員時,在子類中將隱藏這個父類成員,即在子類中缺省將不能訪問這個父類成員,如果一定要訪問,可用super關(guān)鍵字體繼承過程中的方法重寫Class Avoid f() System.out.println(“A f()”);Class B extends Avoid f() super.f();System.out.println(“A f()”);public static void main(String s)B b=new B(); b.f();/?繼承與多態(tài)多態(tài)性
33、抽象類和抽象方法接口 返回多態(tài)性 多態(tài)性是指“多種形式”它使用不同的實例而執(zhí)行不同操作多態(tài)包括靜態(tài)多態(tài)性和動態(tài)多態(tài)性靜態(tài)多態(tài)性-編譯時多態(tài)即用相同的方法名定義不同的方法內(nèi)容。編譯時根據(jù)它們的特征來進行編譯. 即:方法重載動態(tài)多態(tài)性-運行時多態(tài)一種在運行時調(diào)用重寫方法的機制。子類對象可以作為父類對象使用,這是因為子類通過繼承具備了父類的所有屬性。在程序中凡是可以使用父類對象的地方,都有可以用子類對象來代替。Java提供了 instanceof 運算符,來判斷一個對象屬于哪個類的實例。方法重載 2-1方法重載類中有多個具有相同名稱的方法方法重載類中有多個具有相同名稱的方法方法具有不同的參數(shù)列表方法
34、重載 2-2演示:示例 4public class DisplayNumber /* 無參數(shù)可顯示/ void display() System.out.println(無參數(shù)可顯示!); /* * param num 傳遞至 display 方法的參數(shù) * param num1 傳遞至 display 方法的參數(shù) */ void display(int num, int num1) System.out.println(兩個整數(shù)是: + num + + num1); /* * param型的 count 由 display 方法接收 */ void display(double count)
35、 System.out.println(在 display(double)方法內(nèi): + count) public static void main(String arg) int count = 25; DisplayNumber dispObj = new DisplayNumber(); dispObj.display(); dispObj.display(10 , 20); /* 不存在具有一個 int 型參數(shù)的方法, *int 型值自動轉(zhuǎn)化為 double 型值 */ System.out.println(“調(diào)用 display(double) 方法, + “使用 int 變量: +
36、 count); dispObj.display(count); dispObj.display(25.5); 多態(tài)性 2-2父類子類 - 繪制和移動三角形子類 - 繪制和移動矩形 子類 - 繪制和移動五邊形ShapeDraw ()Move ()TriangleDraw () DrawTraingleMove () MoveTriangleVerticesRectangleDraw () DrawRectangleMove () MoveRectangleCornerPentagonDraw () DrawPentagonMove () MovePentagonVertices方法重寫 2-1
37、方法重寫子類和父類的方法具有相同的名稱和類型用子類對象調(diào)用子類中的重寫方法super.methodname() 用于調(diào)用父類中的方法方法重寫 2-2父類和子類中具有相同名稱和類型的方法 public static void main(String arg) Rectangle rectObj = new Rectangle(10, 15); rectObj.getPerimeter(); Rectangle sqObj= new Square(15); sqObj.getPerimeter(); 調(diào)用父類方法調(diào)用子類方法class Square extends Rectangle Square
38、(int len) length = len; /* 計算周長.*/ void getPerimeter() System.out.println(“正方形的周長為 + (4 * length); class Rectangle int length; int width; Rectangle(int len , int wid) length = len; width = wid; /* 計算矩形的周長.*/ void getPerimeter() System.out.println(“矩形的周長為 + (2 * (length + width); 抽象類和抽象方法 用abstract關(guān)鍵
39、字修飾不能在類內(nèi)實現(xiàn)的方法,這樣的方法稱為抽象方法,含有抽象方法的類必須聲明為abstract,這樣的類叫抽象類。抽象類中不一定包含抽象方法,但包含抽象方法的類一定要聲明為抽象類抽象類本身不具備實際的功能,只能夠用于派生時重載。如果一個類被定義為抽象類,則該類不能進行實例化,必須通過重載的方式來實現(xiàn)抽象類中的方法。 例子:ShapeTest.java返回接口接口是一種更純的抽象類,它是方法定義和常量值的集合,Java通過接口使得處于不同層次甚至不相關(guān)的類可以擁有相同的行為。接口之間可以繼承,從而使功能更強.在定義的類的過程中,可以實現(xiàn)多個接口,從而實現(xiàn)多繼承.接口定義格式: public in
40、terface 接口名 extends 父接口 接口體;接口體包含常量定義和方法定義,接口的變量是自動是public static final屬性, 接口中的方法自動是public abstract屬性,并沒有方法體,以分號結(jié)尾。例子:InterfaceDemo.java接口實現(xiàn)格式:修飾符 class 類名 extends 父類 implements 接口必須實現(xiàn)接口的所有方法;例子:TestInterface.java TestInterfaceShape.javastatic 修飾符static修飾的成員方法叫靜態(tài)方法static修飾的成員數(shù)據(jù)叫靜態(tài)數(shù)據(jù)目的使該方法或數(shù)據(jù)獨立于類的實例,
41、使用類去訪問,而不是類實例,所以也叫全局方法和數(shù)據(jù)static 修飾符調(diào)用靜態(tài)方法的語法為: classname.methodname( ); classname.fieldname; 規(guī) 則可以調(diào)用其他靜態(tài)方法必須訪問靜態(tài)數(shù)據(jù)不能使用 super 或 this 關(guān)鍵字初始化類初始化通過類初始化塊完成static class Teststatic類加載時初始化對象初始化通過對象初始化塊完成普通的 class Test對象創(chuàng)建時初始化返回final的使用finalfinal 修飾類 不能被繼承final 修飾變量 不能被修改final 修飾成員方法 不能被重寫內(nèi)部類當(dāng)A類為B類服務(wù)時,為不讓外界
42、直接訪問到A類,因此可把這個A類定義在B類的內(nèi)部,變?yōu)閮?nèi)部類。內(nèi)部類可直接使用外部類的成員分類static內(nèi)部類普通內(nèi)部類匿名內(nèi)部類返回示例interface Bvoid add();public class Testint m=0;class AA()m=20;public B getB()class C implements Bpublic void add()return new C();包包是類庫的組成單元,Java的類庫是由各種各樣功能包組成的.Java安裝目錄jrelibrt.jar就是java的類庫類和接口是包的組成元素,編程人員可以把一組類和接口通過package關(guān)鍵字封裝在一
43、個包中。從而實現(xiàn)了Java的命名空間。聲明包在源文件的開始加上:package包名(要求全部小寫)在編譯時,加-d參數(shù),指明包放的位置Javac 包名/文件名.java使用包中的類如使用不同包的類,必須加入import關(guān)鍵字Java 包名.類名引用的包必須在classpath環(huán)境變量中,如果不在,運行時要用-classpath參數(shù)單獨指定.返回打包及編譯-示例package lhj;public class Greet public void SayHello()System.out.print(hello,i am lhj);這個文件保存在lhj的目錄中使用包的類-示例package aa;
44、public class Test /* * param args */public static void main(String args) lhj.Greet g = new lhj.Greet();g.SayHello();這個文件保存在aa的目錄中高級訪問控制訪問修飾符為:publicprotectedprivate如果一個類或類的成員前沒有任何訪問修飾符時,它們獲得缺省的訪問權(quán)限。public 訪問修飾符只有在使用 public 訪問修飾符時,類的成員才可被同一包或不同包中的所有類訪問。也就是說,public 訪問修飾符可以使類的特性公用于任何類。 缺省訪問權(quán)限/protected
45、訪問修飾符缺省的成員可以被同一包中的其他類訪問。protected 訪問修飾符允許類本身、同一包中的所有類和不同包中的子類訪問 。如果希望一個成員在當(dāng)前包外可見,但僅僅是成員所在類的子類直接可見,就要使用 protected 修飾該成員。 private 訪問修飾符private 訪問修飾符是限制性最大的一種訪問修飾符。 被聲明為private的成員只能被此類中的其他成員訪問,不能被類外看到。 繼承體系結(jié)構(gòu)中最高級別的類決不會被聲明為 private 類。 高級訪問控制總結(jié)Java中將類成員的可見度分為四個種類:同一類中的成員同一包中的其他類不同包中的子類不同包中的非子類private成員缺省
46、的成員protected成員public成員同一類中的成員是是是是同一包中的其他類否是是是不同包的子類否否是是不同包中的非子類否否否是105.int num1 = 5;Integer num = new Integer(num1);int num2 = Value();.包裝類 int digit = 10;原始數(shù)據(jù)類型使用原始數(shù)據(jù)類型聲明的變量視為對象原始數(shù)據(jù)類型包裝類Java.lang 提供106包裝類 Short short(短整型)Booleanboolean(布爾)Double double(雙精度)Floatfloat(浮點型)Long long(長整型)Integerint(整型
47、)Character char(字符)Byte byte(字節(jié))包裝類原始數(shù)據(jù)類型107包裝類 確定是否允許將指定字符作為 Unicode 標(biāo)識符中的首字符isUnicodeIdentifierStart()確定字符是否為空格或換行符isSpace()確定字符是否為大寫形式isUpperCase()確定字符是否為小寫形式isLowerCase()確定字符是否為字母isLetter()確定字符是否為 0 至 9 之間的數(shù)字isDigit()說明方法Character包裝類的方法108包裝類的用途用于值類型和字符串之間的轉(zhuǎn)換異常處理什么是異常異常的類型異常的處理技術(shù)異常的處理的原則110什么是異常
48、?public class ExceptionRaised public ExceptionRaised() public int calculate( int operand1, int operand2) int result = operand1 / operand2; return result; public static void main(String args) ExceptionRaised obj = new ExceptionRaised(); int result = obj.calculate(9, 0); System.out.println(result); OS
49、!異常情況異 常程序突然終止并將控制交給操作系統(tǒng)在運行時發(fā)生的錯誤 111ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionNumberFormatException異常類的層次結(jié)構(gòu)Throwable 具有兩個子類,它們是Exception:處理用戶程序應(yīng)當(dāng)捕獲的異常情況Error:Error 類的異常為內(nèi)部錯誤,因此在正常情況下不期望用戶的程序捕獲它們 AWTError112Java異常類 文件結(jié)束EOFException找不到文
50、件FileNotFoundExceptionI/O 異常的根類IOException數(shù)字轉(zhuǎn)化格式異常,比如字符串到 float 型數(shù)字的轉(zhuǎn)換無效NumberFormatException不能加載所需的類ClassNotFoundException方法接收到非法參數(shù)IllegalArgumentException數(shù)組大小小于或大于實際的數(shù)組大小ArrayIndexOutOfBoundException嘗試訪問 null 對象成員NullPointerException許多 java.lang 異常的基類RuntimeException異常層次結(jié)構(gòu)的根類Exception算術(shù)錯誤情形,如以零作除數(shù)
51、ArithmeticException線程中斷InterruptedException說 明異 常113什么時候產(chǎn)生異常對外部資源進行訪問文件數(shù)據(jù)庫打印機等114ThrowableThrowable(String message) 構(gòu)造帶指定詳細消息的新throwable。Throwable(String message, Throwable cause):構(gòu)造一個帶指定詳細消息和 cause 的新 throwable。115Throwable Throwable getCause() 返回此 throwable 的 cause;如果 cause 不存在或未知,則返回 null。 String
52、 getLocalizedMessage() 創(chuàng)建此 throwable 的本地化描述。 String getMessage() 返回此 throwable 的詳細消息字符串。116Throwable void printStackTrace() 將此 throwable 及其追蹤輸出至標(biāo)準(zhǔn)錯誤流。 void printStackTrace(PrintStream s) 將此 throwable 及其追蹤輸出到指定的輸出流。 void printStackTrace(PrintWriter s) 將此 throwable 及其追蹤輸出到指定的 PrintWriter。117ExceptionE
53、xception(String message) 構(gòu)造帶指定詳細消息的新異常。Exception(String message, Throwable cause) 構(gòu)造帶指定詳細消息和原因的新異常。非構(gòu)造函數(shù)方法均從Throwable類繼承。118手動引發(fā)異常指定由方法引發(fā)的異常 tryfinallycatchthrowsthrow處理異常 2-2要監(jiān)控的程序語句包含在此塊中以合理的方式捕獲和處理異常釋放資源等119try 和 catch 塊 2-1trycatch異常執(zhí)行 catch 后程序繼續(xù)正常運行程序控制 引發(fā)代碼塊單 元120try 和 catch 塊 2-2演示:示例 1try 和
54、 catch 塊的用法class ExceptionRaised /* 構(gòu)造方法. */ public ExceptionRaised() /* * 這個方法運行時將會產(chǎn)生一個異常. * param operand1 除法中的分子 * param operand2 除法中的分母 * return int 返回除法的結(jié)果 */ public int calculate(int operand1, int operand2) int result = operand1 / operand2; return result; public class ArithmeticException /* 構(gòu)造
55、方法. */ public ArithmeticException() public static void main(String args) ExceptionRaised obj = new ExceptionRaised(); try /* 定義變量 result 以存儲結(jié)果. */ int result = obj.calculate(9, 0); System.out.println(result); catch (Exception e) System.err.println(“發(fā)生異常: + e.toString(); e.printStackTrace(); 121final
56、ly 塊try 塊finally 塊catch 塊 無異常異常try、catch 和 finally 塊的執(zhí)行流程122異常處理塊的一般形式try / 要監(jiān)控錯誤的代碼塊 methodGeneratingException(); catch (Exception e) / Exception e 的異常處理程序 finally / 在 try 結(jié)束前要執(zhí)行的代碼塊 cleanup();123多重 catch 塊3-1一段代碼可能會生成多個異常當(dāng)引發(fā)異常時,會按順序來查看每個 catch 語句,并執(zhí)行第一個類型與異常類型匹配的語句執(zhí)行其中的一條 catch 語句之后,其他的 catch 語句將被
57、忽略 try . catch(ArrayIndexOutOfBoundsException e) catch(Exception e) 124多重 catch 塊3-2使用多重 catch 語句時,異常子類一定要位于異常父類之前 try . catch(Exception e) catch(ArrayIndexOutOfBoundsException e) 125使用 throw 和 throws 2-1 語句 3throw 異常引發(fā)的異常!停止異常處理程序可執(zhí)行程序語句語句 1語句 2126用戶自定義異常 2-1自定義異常概念使用自定義異常的時候JavaAPI提供的內(nèi)置異常不一定總能捕獲程序
58、中發(fā)生的所有錯誤。有時會需要創(chuàng)建用戶自定義異常 自定義異常需要繼承Exception 及其子類127class ArraySizeException extends NegativeArraySizeException /* 構(gòu)造方法。 */ ArraySizeException() super(“您傳遞的數(shù)組大小非法); 用戶自定義異常 2-2示例: 示例 6創(chuàng)建用戶自定義異常繼承 Exception 或其子類 class ExceptionClass ExceptionClass(int val) size = val; try checkSize(); catch (ArraySizeE
59、xception e) System.out.println(e); /* 聲明變量以存儲數(shù)組的大小和元素. */ private int size; private int array; /* 檢查數(shù)組長度的方法. * throws 一個 ArraySizeException */ public void checkSize() throws ArraySizeException if (size 0) throw new ArraySizeException(); array = new int3; for (int count = 0; count 3; count+) arraycou
60、nt = count + 1; class UserDefinedExceptions /* 構(gòu)造方法. */ protected UserDefinedExceptions() /* * 類和應(yīng)用程序的唯一入口點. * param arg 字符串參數(shù)的數(shù)組 */ public static void main(String arg) ExceptionClass obj = new ExceptionClass(Integer.parseInt(arg0); 128總結(jié)異常是運行時發(fā)生的錯誤可以使用 try、catch、throw、throws 和 finally 來管理 Java 異常處理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廈門市集美區(qū)杏濱中心幼兒園招聘備考題庫及參考答案詳解1套
- 2025年寧波工程學(xué)院與樂歌人體工學(xué)科技股份有限公司聯(lián)合招聘高層次人才備考題庫及參考答案詳解
- 佛山市順德區(qū)勒流新球初級中學(xué)2025年英語臨聘教師招聘備考題庫及答案詳解1套
- 2025年石河子城市建設(shè)投資集團招聘備考題庫完整答案詳解
- 2025年襄陽東津創(chuàng)業(yè)投資有限公司社會招聘備考題庫及答案詳解1套
- 中國人民人壽股份有限公司2026屆校園招聘備考題庫及1套參考答案詳解
- 四級考級試卷真題及答案
- 2025年黑龍江八一農(nóng)墾大學(xué)公開招聘輔導(dǎo)員和教師22人備考題庫及參考答案詳解
- 煙臺東方威思頓電氣有限公司2026屆校園招聘200人備考題庫帶答案詳解
- 2025年焦作市中醫(yī)院下半年招聘備考題庫參考答案詳解
- 2025天津市第二批次工會社會工作者招聘41人考試筆試參考題庫及答案解析
- DB32T 4660-2024 政務(wù)服務(wù)差評處置工作規(guī)范
- 嬰幼兒游戲指導(dǎo)課件 第7章第2節(jié):嬰幼兒社會性游戲的組織與實施
- 江西省人民防空工程標(biāo)識標(biāo)牌設(shè)置及制作規(guī)范圖冊(2021版)
- NB-T+10588-2021風(fēng)力發(fā)電場集控中心運行管理規(guī)程
- 整理收納師課件
- 護工的溝通技巧
- 浮選藥劑及其作用原理資料課件
- 國開電大軟件工程形考作業(yè)3參考答案
- 皮部經(jīng)筋推拿技術(shù)操作方法及常見疾病的皮部經(jīng)筋推拿技術(shù)
- 冠脈痙攣診療進展
評論
0/150
提交評論