版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Java語言數(shù)尚道科技(北京)Java 語言基礎Java語言基礎關鍵字、標識符和分隔符數(shù)據(jù)類型-簡單數(shù)據(jù)類型 自動類型轉(zhuǎn)換 強制類型轉(zhuǎn)換-復合數(shù)據(jù)類型 Null 運算符 表達式與流程 常量和變量Java語言中的關鍵字、標識符和分隔符標識符(identifier)一、標示符的概念:變量以及后面將要講到的類和方法都需要一定的名稱,這種名稱就叫做標識符。二、標示符名規(guī)則:1.2.3.4.5.以字母、_、$開頭,由字母、_、$和數(shù)字組成一定不能夠是Java中的關鍵字標識符不能包含空格。Java中的標識符嚴格區(qū)分大小寫注意:在起名字的時,為了提高閱讀性,要盡量有意義,“見名知意”。關鍵字(KeyWord
2、)一、關鍵字:是Java語言本身使用的標識符,它有其特定的語法含義。二、所有的Java關鍵字不能被用作標識符三、Java語言中的關鍵字都小寫。關鍵字(KeyWord)Java語言的數(shù)據(jù)類型數(shù)制十進制、八進制或十六進制數(shù)據(jù)的表示方法:一以1-9開頭的數(shù)為十進制數(shù)二以0開頭的數(shù)為八進制數(shù)三以0x開頭的數(shù)為十六進制數(shù)Java語言的數(shù)據(jù)類型接口類型:interface數(shù)組復合數(shù)據(jù)類型類類型數(shù)據(jù)類型布爾類型:boolean字符類型:char基本數(shù)據(jù)類型浮點數(shù)類型:float, double數(shù)值類型整數(shù)類型:byte, short,int,longJava語言的數(shù)據(jù)類型ac strint a = 12;
3、char c = m;String str = “abcde”;abcde堆棧12m0x2244Java語言的數(shù)據(jù)類型整數(shù)int示例1.2表示十進制數(shù)2,32位保存。2.077表示八進制整數(shù)77,等于十進制數(shù)63,32位保存。3.0xBABE表示十六進制整數(shù)BABE,等于十進制數(shù)47806,32位保存。長整型long常量示例1.2l或者2L表示十進制數(shù)2,64位保存。2.077L或077l表示八進制數(shù)77,64位保存。3.0xBABEL或0xBABEl表示十六進制整數(shù)BABE,64位保存。浮點數(shù)示例一5.31d,5.31D,5.31雙精度浮點數(shù)。都表示64位保存的二.5.31f,5.31F表示
4、32位保存的單精度浮點數(shù)。字符示例一char類型的常量值必須用一對單引號()括起來。例如:1.a/表示字符a2.t/表示tab鍵3.u?字符,?/表示一個具體的Unicode是4位十六進制數(shù)字邏輯類型(boolean)一邏輯值用boolean(布爾)類型表示。1.有兩個常量值:true和false,它們?nèi)切憽6﨡ava是一種嚴格的類型語言,它不布爾類型之間進行轉(zhuǎn)換。數(shù)值類型和小結一 數(shù)制:二進制、八進制、十進制、十六進制,表示形式;二.基本數(shù)據(jù)類型:byte、short、int、long、char、float、double、boolean的占用長度、數(shù)值范圍,后綴形式;Java數(shù)據(jù)類型之間
5、的轉(zhuǎn)換類型轉(zhuǎn)換一 Java語言不進行轉(zhuǎn)換。數(shù)值類型和布爾類型之間二.整型、實型、字符型數(shù)據(jù)可以混合運算。類型轉(zhuǎn)換一 自動類型轉(zhuǎn)換:也稱為隱式類型轉(zhuǎn)換;二 強制類型轉(zhuǎn)換:需要采用顯式類型轉(zhuǎn)換;自動類型轉(zhuǎn)換規(guī)則一 所有的整數(shù)轉(zhuǎn)換為小數(shù);二 位數(shù)少的類型轉(zhuǎn)換為位數(shù)多的類型。char ch=c; int b=12; b=ch;long l=12L; float f=12.3f;double d=23.34d; d=f;f=l;byte a =12; int b=23; b=a;轉(zhuǎn)換規(guī)則表操作數(shù)1類型操作數(shù)2類型轉(zhuǎn)換后的類型byte或shortintintbyte或short或intlonglongby
6、te或short或int 或longfloatfloatbyte或short或int 或long或floatdoubledoublecharInt,long,float,double強制類型轉(zhuǎn)換一 位數(shù)多的類型向位數(shù)少的類型進行轉(zhuǎn)換.二 所有的小數(shù)轉(zhuǎn)換為整數(shù)。三 其一般形式為:(類型)表達式。問題一 要了解一個字符在Unicode表中的順序,可以將它轉(zhuǎn)換為int型;二.反過來,也可將一個整數(shù)轉(zhuǎn)換字符型。 VarDemo.javaJava語言中的運算符與表達式運算符按照運算符功能來分,運算符有7種:1.賦值運算符、2.算術運算符、3.關系運算符、4.條件運算符、運算符5. 邏輯運算符、6. 位運
7、算符、7. 其他運算符(new, 轉(zhuǎn)換運算符)instanceof、強制類型8.另外,算術運算符和賦值運算符可以結合在一起形成算術賦值運算符。運算符按照連接操作數(shù)的多少來分,有1. 一元(目)運算符、2. 二元(目)運算符、3. 三元(目)運算符。算術運算符一 雙目運算符+,-,*,/,%二 單目運算符+,-,+,-邏輯運算符一 包括邏輯與(&)、邏輯或(|)、和邏輯非(!)。二 除此之外,java語言還提供了邏輯運算符&&,|。邏輯運算符一 利用&、|做運算時,運算符左右兩邊的表達式都會被運算執(zhí)行,最后兩表達式再進行與、或運算。二.利用&&,|
8、做邏輯運算時,如果只計算運算符表達式左邊的結果即可確定與、或的結果,則右邊的表達式將執(zhí)行。賦值運算符(雙目)一 賦值運算符“=”用于把運算符“=”右側的數(shù)據(jù)或表達式賦給左側的變量。二.在賦值運算符兩側的類型不一致的情況:1.自動類型轉(zhuǎn)換2.強制類型轉(zhuǎn)換廣義賦值運算符一 +=,-=,*=,/=,%=,&=,|=二 一般形式為:變量名運算符=表達式三目條件運算符一 三目條件表達式的結構為:(條件)?結果1:結果2;二 條件表達式的計算過程為:首先計算作為條件的邏輯表達式或關系表達式,返回值為true時表達式的值為結果1,返回值是false時表達式的值為結果2。三目條件運算符等同于resul
9、t= a>b ? a-b : b-a;int a=5, b=2, result; if (a>b)result=a-b; elseresult=b-a;三目條件表達式可取代簡單的二分支結構,書寫簡單,并有較快的運算速度。例如: FindMinMax.java其它運算符1.()、強制類型轉(zhuǎn)換運算符;2.對象運算符instanceof:某個具體對象是否是某個類(或其它的子類)的一個實例化對象,若是, 則返回true,否則返false;(后面的課程詳細描述。3.內(nèi)存分配運算符new:為數(shù)組和類對象分配內(nèi)存空間。(后面的課程詳細描述)常量與變量常量與變量相同之處在于 常量與變量都有作用范圍
10、,可以是局部的,也可以是全局的,全局的又分為是隸屬于類的量(類常量和類變量),還是隸屬于實例的量(實例常量和實例變量); 常量與變量前面都可以限修飾符; 常量與變量可以是簡單數(shù)據(jù)類型也可以是復合數(shù)據(jù)類型;常量一 常量:在程序運行過程中,其值不變的量。二 Java中的常量使用關鍵字final修飾。三 final既可以修飾簡單數(shù)據(jù)類型,也可以修飾復合數(shù)據(jù)類型。說明一簡單數(shù)據(jù)類型常量其值一旦確定,就不能被改變。二復合數(shù)據(jù)類型常量指的是具體的值是可以改變的。不能被改變,而其說明(須)三常量既可以是局部常量,也可以是類常量,還可以是實例常量。如果是類常量,一般在數(shù)據(jù)類型前加上static關鍵字修飾。四.
11、常量名一般大寫,多個單詞之間用下劃線連接。變量一 變量:指在程序執(zhí)行過程中,其數(shù)值可以改變的量。二 變量既可以是簡單數(shù)據(jù)類型也可以是復合數(shù)據(jù)類型。三 Java中的變量要遵循“先,再使用”原則四 變量包括變量名和變量值兩部分。變量的分類 StudentDemo.java如果變量是簡單數(shù)據(jù)類型一 變量名:用標識符命名,對應一定數(shù)量的內(nèi)存單元,其單元數(shù)的多少由變量數(shù)據(jù)類型決定。二.變量值:指定單元存放的具體內(nèi)容。如果變量是復合數(shù)據(jù)類型一變量名:用標識符命名,對應的內(nèi)存單元,存放的是32位中間地址(heap),稱為。二.變量值:指定實體的具體內(nèi)容,一般用new加構造函數(shù)運行時初始化,具體的值被保留在h
12、eap中。變量的初始化一 全局變量(即成員變量)如果不初始化,則取默認值。二 局部變量(即本地變量)必須初始化,否則將出錯。變量初始化(續(xù))各種數(shù)據(jù)類型的默認值內(nèi)存分配基本類型、對象句柄流式文件對象靜態(tài)變量常量內(nèi)存分配變量的一傳值:主要基本數(shù)據(jù)類型1.特點:傳遞變量的實際值,是原值的一個拷貝,一個變量值的改變響到另一個變量的值。影二2.傳址介紹。:主要對象操作,以后變量(總結)變量的概念:內(nèi)存中的一個區(qū)域該區(qū)域有的名稱(變量名)和類型(數(shù)據(jù)類型)該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化定義變量的格式:數(shù)據(jù)類型變量名=初始化值變量是通過使用變量名來這塊區(qū)域的Java是強類型語言,每個變量必須先類
13、型,后使用.使用變量注意: 變量的作用域:一對 之間有效變量的分類(總結) 按被的位置劃分: 成員變量: 類變量 實例變量 局部變量:方法或語句塊內(nèi)部定義的變量 按所屬的數(shù)據(jù)類型劃分: 基本數(shù)據(jù)類型變量數(shù)據(jù)類型變量Java語言的流程Java程序結構(3種)一 順序結構:二 分支選擇結構:三 循環(huán)結構:分支選擇結構一 分支語句的主要功能是:實現(xiàn)程序的流程,即根據(jù)一定的條件有選擇地執(zhí)行或跳過特定的語句。二.Java分支語句:1.ifelse語句2.Switch語句一 令狐沖參加比武大會1.如果獲得第一名,將出任武林盟主2.如果獲得第二名,將出任武當掌門3.如果獲得第三名,將出任峨嵋掌門4.否則,將
14、被逐出師門問題解決int mingCi = 1; switch (mingCi) case 1:System.out.println("出任武林盟主");break; case 2:System.out.println("出任武當掌門"); break;case 3:System.out.println("出任峨嵋掌門"); break;default:System.out.println("被逐出師門");如果:grade=B則:程序執(zhí)行結果為:score=0switch (grade) case A: scor
15、e=5;case B: score=4; case C: score=3; default: score=0;如果:grade =B;則:程序執(zhí)行結果為:score = 4;switch (grade)caseA: score=5;break; case B:score=4;break;caseC: score=3;break; default: score=0; switch語句語法格式switch(表達式)case 常量1:語句1; break;case 常量2:語句2; break; case 常量N:語句N; break;default:語句; break; SwitchTest.ja
16、va switch語句有關規(guī)則§switch(表達式)中表達式的返回值必須是下述幾種類型之一:分別是基本類型的byte,short,int,char,以及類型的String(只有JavaSE 7 和以后的版本 可以接受String類型參數(shù)),enum和byte,short,int,char的Byte,Short,Integer,Character§case子句中的值必須是常量,且所有case子句中的值應是不同的;default子句是任選的;break語句用來在執(zhí)行完一個case分支后使程序跳出switch語句塊;§§循環(huán)語句一 循環(huán)結構常用的的3種形式1
17、.已知循環(huán)次數(shù)的循環(huán)(for)2.先循環(huán)條件的真值循環(huán)(while)3.后循環(huán)條件的真值循環(huán)(do-while)return語句一return語句用于方法的返回上,當程序執(zhí)行到return語句時,終止當前方法的執(zhí)行,返回到調(diào)用這個方法的語句。二. return語句通常位于一個方法體的最后一行,有帶參數(shù)和不帶參數(shù)兩種形式,帶參數(shù)形式的return語句該方法并返回一個值。return語句三 當方法用void時,說明不需要返回值(即返回類型為空),應使用不帶參數(shù)return語句。四.不帶參數(shù)的return語句也可以省略,當程序執(zhí)行到這個方法的最后一條語句時,遇到方法的結束標志“”就自動返回到調(diào)用這個
18、方法的程序中。return語句五帶參數(shù)的return語句有如下語法形式:return表達式;六.當程序執(zhí)行到這個語句時,首先計算“表達式”的值,然后將表達式的值返回到調(diào)用該方法的語句。七.返回值的數(shù)據(jù)類型必須與方法中的返回值類型一致,可以使用強制類型轉(zhuǎn)換來使類型一致類與對象對象一.日常生活中,對象是我們認識世界的基本單元,它可以是人,也可以是物,還可以是一件事。二.整個世界就是由形形的。的“對象”對象三.對象是現(xiàn)實世界中的一個實體,其特征是:1.對象的標示(名稱)唯一;2.對象的狀態(tài)(屬性、數(shù)據(jù)區(qū))3.對象的行為(方能)類一 在軟件中,類就是一個模板,它定義了一類事物的狀態(tài)和行為。二 類是對現(xiàn)
19、實世界的抽象,因此類是一種抽象的復合數(shù)據(jù)類型。類與對象的關系一.類和對象之間是抽象和具體的關系。類是創(chuàng)建對象的模板,對象是類的具體實例。二.類(class)是總稱,對象是,因此對象(object)也叫實例(instance)。類與對象小結一需求中提取類,即抽象的過程。二創(chuàng)建一個類就是創(chuàng)建一個新的數(shù)據(jù)類型,實例化一個類,就得到一個對象。三.類的有兩部分,分別是成員變量和成員方法。類與對象小結(續(xù))四 類的成員變量可以是基本類型或符合數(shù)據(jù)類型,也可以是數(shù)組、集合等五 類的成員方法用于處理該類的數(shù)據(jù),是用戶與對象或?qū)ο笾g的接口。類的定義 類的定義格式如下:類的定義說明關鍵字class表示類定義的開
20、始一修飾符分為符和類型說明符二類的類型說明符主要有兩個final和abstract1.類的定義說明(須)類的符有兩個,一個是public,2.即公共類,另一個就是默認,即沒有訪問符。一個類被定義為公共類,就表示它能夠被其它所有的類和。在一個Java源程序中只能有一個public類,這個類一般含有main方法。類的定義說明(須)不用public定義的類,其只能被同一個包中定義的類和。對象的生成、使用和清除構造函數(shù)(Constructor)一 構造方法(constructor)是一類特殊的成員方法。二 從功能上講,它使用new關鍵字用來對新創(chuàng)建的對象進行初始化的。類名對象名=new構造函數(shù)(實際參
21、數(shù))構造函數(shù)(Constructor)三 從形式上來講,它有以下特點:1.它與類同名;2.它沒有任何返回值;3.除了上述兩點外,在語法結構上與一般的方法相同。new關鍵字的作用一 為對象分配內(nèi)存空間。二 引起對象構造方法的調(diào)用。三 為對象返回一個(地址)。類的默認構造函數(shù)一 在Java里,如果一個類沒有明顯的表明哪一個類是它的父類,Object類就是它的父類。二.如果類中沒有定義構造函數(shù),編譯器會自動創(chuàng)建一個默認的不帶參數(shù)的構造函數(shù)。類的默認構造函數(shù)三 如果程序員為類定義了構造函數(shù),Java就為該類創(chuàng)建默認的不帶參數(shù)的構造函數(shù)。四.注意:如果類中提供的構造函數(shù)都不是無參數(shù)構造函數(shù),卻企圖調(diào)用無
22、參數(shù)構造函數(shù)初始化此類的對象,編譯時會產(chǎn)生語法錯誤 Singleton.java對象創(chuàng)建和對象使用說明對象由兩部分組成: 對象的實體 對象的p1=new (“Jack”,”Male”,23);對象對象的JackMale23p1p1=newp2=p1;(“Jack”,”Male”,23);p1和p2指向同一個對象對象對象的JackMale23p1p2p1=newp3=new(“Jack”,”Male”,23);(“Jack”,”Male”,23);P1和P3指向不同的對象對象對象的另一個對象的對象p3JackMale23 JackMale23p1Java內(nèi)存一自動回收機制。Java虛擬機內(nèi)存的回
23、收。線程負責二強制回收機制:Java系統(tǒng)提供了方法“System.gc()”來強制立即回收(但系統(tǒng)并不保證會立即進行回收)。JAVA自動回收機制一一個單元是否是的依據(jù)是:該單元所對應的對象是否仍被程序所用。二.一個對象是否仍為程序所用的依據(jù)是:是否有指向該對象。三 Java的對所作為收集器自動掃描對象的動態(tài)內(nèi)存區(qū),的對象加標記,然后把沒有的對象收集起來并出去。JAVA自動回收機制(須)四 java虛擬機可以自動并收集到“”,但一般立即它們的空間。五.Java系統(tǒng)定義了一套回收算法,用來提高回收的效率。Java內(nèi)存強制回收一 System.gc();二 Java沒有提供析構方法,但提供了一個類似
24、的方法:protectedvoidfinalize()。三 Java虛擬機在回收對象單元之前先調(diào)用該對象的finalize方法,如果該對象沒有定義finalize方法,則java系統(tǒng)先調(diào)用該對象默認的finalize方法。 J_Finalize.java類的靜態(tài)屬性和靜態(tài)方法程序運行時的內(nèi)存占用存放程序的代碼部分存放程序的全局數(shù)據(jù)和靜態(tài)數(shù)據(jù)存放程序動態(tài)申請的數(shù)據(jù)存放程序的局部數(shù)據(jù)和參數(shù)代碼區(qū)(code area)數(shù)據(jù)區(qū)(data area)堆區(qū)(heap area)棧區(qū)(stack area)問題問題一:不論產(chǎn)生多少個對象,或不存在任何對象的情況下,某些特定數(shù)據(jù)的份;空間都只有一問題二:某些數(shù)
25、據(jù)或者函數(shù)不要和class綁在一起。object解決方案一 通過關鍵字static,便可以處理這兩種情況,當你將某個數(shù)據(jù)成員或某個成員函數(shù)static時,它就不再局限于所屬的classobject上。為二 Java中把這種代表類范圍信息的變量用關鍵字static修飾。Static的使用場合一 用static修飾的屬性(變量)稱為靜態(tài)屬性,又叫類變量;二 用static修飾的方法稱為靜態(tài)方法,又叫類方法(靜態(tài)方法里,無this);三 可以用來修飾初始化語句塊,這樣的語句塊常稱為靜態(tài)初始化語句塊(要跟非靜態(tài)初始化語句塊區(qū)來) Peson.java Test.java StuDemo.java類的靜
26、態(tài)屬性和靜態(tài)方法一 即使沒有創(chuàng)建該類的具體對象,類中的static 類成員也會存在,這時可以通過:1.類名.靜態(tài)變量2.類名.靜態(tài)方法問題一 你知道m(xù)ain()為什么要用static修飾的嗎?了二 main()方法中的static可以去掉嗎?類的靜態(tài)屬性和靜態(tài)方法static方法中不能直接調(diào)用非static的域或方法(必須通過對象名)。1.static函數(shù)并不需要先產(chǎn)生任何對象,就可以通過類名來調(diào)用。2.3.non-static數(shù)據(jù)/函數(shù)和對象綁定()。在static函數(shù)中“直接”取用non-static數(shù)據(jù)/函數(shù),會產(chǎn)生語法錯誤。靜態(tài)代碼塊與非靜態(tài)代碼塊的異同點一 相同點:1.都是在JVM加
27、載類時且在構造方法執(zhí)行之前執(zhí)行,在類中都可以定義多個。2.一般在代碼塊中對一些static變量進行賦值。靜態(tài)代碼塊與非靜態(tài)代碼塊的異同點二 不同點:1.靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行:靜態(tài)代碼塊>非靜態(tài)代碼塊>構造方法2.靜態(tài)代碼塊只在第一次new執(zhí)行一次,之后不再執(zhí)行,而非靜態(tài)代碼塊在每new一次就執(zhí)行一次。 staticBlock PuTong.java靜態(tài)代碼塊一靜態(tài)代碼塊只能定義在類里面,它于任何方法,不能定義在方法里面。二靜態(tài)代碼塊里面的變量都是局部變量,只在本塊內(nèi)有效。三靜態(tài)代碼塊會在類被加載時自動執(zhí)行,而無論加載者是JVM還是其他的類。靜態(tài)代碼塊四一個類中定義多個靜
28、態(tài)代碼塊,執(zhí)行的順序根據(jù)定義的順序進行。五靜態(tài)代碼塊只能類的靜態(tài)成員,而不實例成員。Java封裝封裝的理解一封裝是指隱藏對象的屬性和實現(xiàn)細節(jié),僅僅對外公開接口。二大的軟件系統(tǒng)中往往封裝了多個小的系統(tǒng)。大系統(tǒng)是建立在已有小系統(tǒng)的基礎上的更為復雜、功能更強大的系統(tǒng)。封裝的理解(須)系統(tǒng)的封裝程度越高,那么它的相對性就越高,而且使用起來也更方便。信息隱藏的必要性?1、解決了代碼冗余,滿足代碼更好的可讀性, 代碼的低耦合性;2、安全考慮封裝特性是通過實現(xiàn)的符號來Java符一 public二 Private三 Protected四 默認符(沒有權限修飾符)Java語言的范圍Java語言提供的一同一個類范
29、圍共有四種:二同一個包三不同包的子類四不同包的非子類修飾符同一個類同一個包不同包的子類不同包的非子類private可以protected可以可以可以public可以可以可以可以package (默認)可以可以一般而言: java中的成員變量被為private的,java的成員方法被多數(shù)的時候,被為public的,構造方法大為public的,但有時也被為private的。Java繼承bicycle(superclass)subclassTandembikesMountainbikesRacing bikesis a關系has a關系軟件的復用性復用其它對象的代碼有兩種方法:一繼承:繼承是由子對象
30、完全繼承父對象的數(shù)據(jù)和操作。“is”的關系。二包容:包容是指把一個對象作為另一個對象的一部份,從而達到復用的目的。“has”的關系。繼承的理解一繼承是類實現(xiàn)可重用性和可擴充性的關鍵持征。在繼承關系下類之間組成網(wǎng)狀的層次結構。二繼承避免公用代碼的重復開發(fā),減少代碼的冗余;三通過繼承增強一致性,從而減少模塊間的接口和界面。School MasterTeacherStudentEmployeeObject類的繼承一被繼承的類稱為父類(superclass),繼承后產(chǎn)生的類稱為子類(subclass)。二單繼承:如果子類只能有一個直接父類, 稱為單繼承。u 例如,輪船、客輪;人。三多繼承:如果子類可以
31、有多個直接父類, 稱為多繼承。u 例如,客輪是輪船和客運工具的子類。Java繼承一Java不支持類的多繼承,但支持接口的多繼承。二Java中的繼承通過關鍵字extends。案例(inheritanceEx).java Student.java Employee.java Manager.java Director.java變量隱藏一變量隱藏:在子類對父類的繼承中,如果子類的成員變量和父類的成員變量同名,此時稱為子類隱藏(override)了父類的成員變量。二子類若要父類的同名變量。要用super關鍵字做前綴加圓點操作符,即super.變量名方法覆蓋一方法覆蓋:在子類中重寫父類的方法,它們的名稱
32、、參數(shù)以及返回類型完全相同。二通過改寫方法體來完成不同的功能。Super關鍵字一如果子類調(diào)用父類的構造函數(shù),則通過super()調(diào)用來實現(xiàn)。二如果子類調(diào)用父類的同名方法,則通過super.方法名()來實現(xiàn)。This關鍵字一this變量代表對象本身。二當類中有兩個同名變量,一個屬于類的成員變量,而另一個屬于某個特定的方法(方法中的局部變量),使用this區(qū)分成員變量和局部變量。三使用this簡化構造函數(shù)的調(diào)用。this與super的對比Java每個類都默認地具有null、this、super三個域,所以在任何類中都可以不加說明就可以直接它們:1.null:代表“空”,用在定義一個對象但尚未為其開
33、辟內(nèi)存空間時。2.this和super:是常用的指代子類對象和父類對象的關鍵字this用于:1.自身對象的成員變量w this.age;自身對象的成員方法w this.diaplay();2.3. 調(diào)用自身的構造方法w this(“Jack”,Male,10);super用于:1.父類對象的成員變量w super.age;父類對象的成員方法w super.display();2.3. 調(diào)用父類的構造方法w super(“Jack”,Male,10);注意一 無論使用this調(diào)用本類構造函數(shù),還是使用super調(diào)用父類構造函數(shù),都必須是該方法體中的第一條可以執(zhí)行語句。二 否則會產(chǎn)生語法錯誤。總結
34、一繼承時,子類利用父類中定義的方法和變量就像它們屬于子類本身一樣。二構造函數(shù)不能被繼承。三當通過子類不含參數(shù)的構造函數(shù)創(chuàng)建子類對象時,先執(zhí)行父類不含參數(shù)的構造函數(shù),再執(zhí)行子類不含參數(shù)的構造函數(shù)。Java多態(tài)Java多態(tài)的概念 Java語言支持兩種多態(tài):動態(tài)多態(tài)靜態(tài)多態(tài)Java靜多態(tài)一靜態(tài)多態(tài)性:在編譯時,就可以被系統(tǒng)識別,也稱為編譯時多態(tài),也稱為靜態(tài)聯(lián)編,也稱為靜綁定。二Java中,重載(overload)方法采用靜態(tài)聯(lián)編的方法實現(xiàn)。Java動態(tài)多態(tài)性一動態(tài)多態(tài)性:在編譯時不能被系統(tǒng)識別,而是在運行時才被系統(tǒng)識別,也稱為運行時多態(tài),也稱為動態(tài)聯(lián)編,也稱為動綁定。二Java中,覆蓋(overri
35、de)方法、抽象方法和接口采用動態(tài)聯(lián)編的方法實現(xiàn)。方法重載一 方法重載(Overloading):Java在一個類中,或者父類和子類中定義多個同名的方法,但這些方法的參數(shù)列表必須不同,即參數(shù)的個數(shù)不同,或參數(shù)類型不同,或參數(shù)順序不同。這種做法稱為方法重載。二 Java中構造方法也是可以重載的。方法重載一注意1:返回類型不能用來區(qū)分重載的方法。二注意2:如果一個類中有兩個同名方法,其參數(shù)列表完全一樣,僅僅返回值類型不同,則編譯時會產(chǎn)生錯誤方法覆蓋一 在子類中對父類的方法重寫時,不僅要求參數(shù)列表完全一致,而且其要求:也要滿足以下2個1.若父類方法定義時有異常拋出,則子類覆蓋父類該方法時時,該方法也
36、不能有常拋出,否則編譯時會產(chǎn)生錯誤。的異2.子類方法不能縮小父類方法的權限instanceof關鍵字(向下) 北京人、湖南人、河北人一定都是 反過來,不一定都是北京人 河北人湖南人北京人父類和子類的對象之間轉(zhuǎn)換Java在父類和子類的對象之間進行轉(zhuǎn)換:1. 自動轉(zhuǎn)換(向上)2. 強制類型轉(zhuǎn)換(向下)自動轉(zhuǎn)換一子類和父類之間存在著“isa”的關系,所以子類對象轉(zhuǎn)換為父類對象時,是自動轉(zhuǎn)換。二或者說向上都是自動轉(zhuǎn)換。強制類型轉(zhuǎn)換一當父類對象轉(zhuǎn)換為子類對象時,必須要強制類型轉(zhuǎn)換?;蛘哒f向下 都是強制類型轉(zhuǎn)換。二格式如下:If(父類對象名 instanceof 子類名)子類對象名=(子類名)父類對象名
37、;else TypeV.javaabstract關鍵字(抽象類,抽象方法)抽象類和抽象方法一 抽象類:如果一個類用abstract修飾,則它是一個抽象類。二 抽象方法:如果一個方法用abstract修飾,則它是一個抽象方法;抽象方法是沒有方法體的,以一個緊跟在后的“;”結束。注意事項一 如果一個類繼承自某個抽象父類,而沒有具體實現(xiàn)抽象父類中的抽象方法,則必須定義為抽象類。二 抽象類是不能實例化的,它的作用是提供一個恰當?shù)母割悺R虼艘话阕鳛槠渌惖某?與final類正好相反。三 如果一個類里有抽象的方法,則這個類就必須成抽象的。但一個抽象類中卻可以沒有抽象方法。 TestAbctract.ja
38、va TestFigure.javafinal關鍵字(final類、final方法、常量)最終類如果一個類沒有必要再派生子類,通??梢杂胒inal關鍵字修飾,表明它是一個最終類。1. Public final class Math2. Public final class String最終方法一最終方法:用關鍵字final修飾的方法稱為最終方法。二最終方法既不能被覆蓋,也不能被重載,它是一個最終方法,其方法的定義永遠不能改變。final方法和final類一final類中的方法可以不為final方法,但實際上final類中的方法都是隱式的final方法。二final修飾的方法不一定要存在于fin
39、al類中。定義類頭時,abstract和final 不能同時使用。常量一常量:在程序運行過程中,其值不變的量。二Java中的常量使用關鍵字final修飾。三final既可以修飾簡單數(shù)據(jù)類型,也可以修飾復合數(shù)據(jù)類型。四final常量可以在的同時賦初值,也可以在構造函數(shù)中賦初值。五如果在常量的同時,使用static修飾,表明這個量是類常量常量格式例如:final double PI=3.1415926; final String str=“Hello World”;格式:final 數(shù)據(jù)類型 常量名=值說明一簡單數(shù)據(jù)類型常量其值一旦確定,就不能被改變。二復合數(shù)據(jù)類型常量指的是不能被改變,而其具體的
40、值是可以改變的。說明(須)三常量既可以是局部常量,也可以是類常量,也可以是常成員變量。如果是類常量,一般在數(shù)據(jù)類型前加上static關鍵字修飾。四常量名一般大寫,多個單詞之間用下劃線連接。 FinalTest.java接口(interface)public interface Flyer public void takeOff(); public void land(); public void fly();接口一接口(interface)是一組方法集,接口中包含的方法都是抽象方法,定義方法體的任務留給實現(xiàn)該接口的類去完成。二接口是用來實現(xiàn)類間(不相關類)多重繼承功能的結構。接口要點一接口是J
41、ava中的一種復合數(shù)據(jù)類型,是用interface關鍵字來定義的;二接口是一種特殊的“類”“抽象類”;,一種特殊的三接口中所有的方法都默認是publicabstract的,并且只有方法頭和參數(shù)列表,沒有方法體;接口要點(須)四接口中所有的變量都默認是publicstaticfinal的;五接口中沒有構造方法;六接口可以繼承,而且可以多重繼承;接口要點(須)七一個類可以實現(xiàn)多個接口。八接口中的方法體可以由java語言書寫,也可以由其他語言書寫,用其他語言書寫時,接口方法需要用native關鍵字修飾。接口的功能一通過接口可以實現(xiàn)不相關類的相為,而不需要考慮這些類之間的層次關系。二通過接口可以指明多
42、個類需要實現(xiàn)的方法。接口的功能三通過接口可以了解對象的交互界面,而不需要了解對象所對應的類。四通過接口可以在運行時動態(tài)地所調(diào)用的方法。類定義接口publicinterfcae接口名稱extends父接口名列表/靜態(tài)常量publicstaticfinal數(shù)據(jù)類型 變量名=常量名;/抽象方法 publicabstractnative返回值類型方法名(參數(shù)列表);接口可以繼承,而且可以多重繼承interface IA interface IB interface IC interface ID extends IA, IB, IC 實現(xiàn)接口修飾符 class A implements IA 修飾符
43、class B extends A implements IB, IC 修飾符class類名extends父類名implements接口 A,接口B,類的成員變量和成員方法;為接口A中的所有方法編寫方法體,實現(xiàn)接口A; 為接口A中的所有方法編寫方法體,實現(xiàn)接口B;因為只實現(xiàn)了一個方法,所以類Example1需要定義成抽象類。interface IExample void method1(); void method2();abstract class Example1 implements IExample public void method1()/ InterfaceTest1.java注
44、意一一個類在實現(xiàn)某個接口的抽象方法時, 必須以完全相同的方法頭。否則,只是在重載一個新方法,而不是實現(xiàn)已有的抽象方法。二接口的抽象方法的限制符默認為public,所以類在實現(xiàn)這些抽象方法時,必須顯式的使用public修飾符,否則將被警告為縮小了接口中定義的方法的范圍。public interface Flyer public void takeOff(); public void land(); public void fly();public class Bird extends Animal implements Flyer public void takeOff() /* take- o
45、ff implementation */ public void land() /* landing implementation */ public void fly() /* fly implementation */ public void buildNest() /* nest building behavior */ public void layEggs() /* egg laying behavior */ public void eat() /* override eating behavior */ package關鍵字package關鍵字軟件(software)和包(pac
46、kage)包幫我們管理大型的軟件系統(tǒng)包可以包含類、接口和子包package關鍵字shippingreportGUIdomainRiverBargeTruckCompanyVehiclepackage關鍵字shipping/domain/Company.class Vehicle.class RiverBarge.classTruck.classGUI/reports/VehicleCapacityReport.classthe "shipping" application packagespackage關鍵字Shippingpackage關鍵字Java包的理解Java通過關
47、鍵字package創(chuàng)建包包(package)是類和接口的集合Java用包來管理名稱空間。包消除了不同組的類中潛在的類名沖突問題package關鍵字Java包的理解Java里的每一個類都屬于一個特定的包“包是類的容器” 包是有層次的java.awt.Colorpackage關鍵字Java包的理解包定義語句必須是Java源文件中的第一條可執(zhí)行語句在默認的情況下,系統(tǒng)會為每一個 .java 源文件創(chuàng)建一個無名包無名包不能被其他包所,為解決這個問題,創(chuàng)建有名子的包package關鍵字包的包的是通過關鍵字import實現(xiàn)的import 包名.下一級包名.的類名;import mylib.;import 包名.下一級包名.*;im
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版房地產(chǎn)抵押貸款合同3篇
- 二零二五版智慧城市物聯(lián)網(wǎng)技術應用合同實施指南3篇
- 二零二五年度文化產(chǎn)業(yè)短期工勞務合作合同2篇
- 二零二五年金融投資風險兜底保障合同示范3篇
- 二零二五年度知識產(chǎn)權股權轉(zhuǎn)讓定金合同3篇
- 二零二五版智能交通系統(tǒng)-城區(qū)隔離護欄采購合同3篇
- 二零二五版?zhèn)€人戶外探險活動貸款合同擔保與安全協(xié)議3篇
- 二零二五版環(huán)保產(chǎn)業(yè)合理化建議書合同2篇
- 二零二五年度新型農(nóng)業(yè)耕地承包與流轉(zhuǎn)管理合同3篇
- 二零二五版GRc構件生產(chǎn)、安裝與智能化管理合同3篇
- 二零二五年度無人駕駛車輛測試合同免責協(xié)議書
- 2023中華護理學會團體標準-注射相關感染預防與控制
- PPVT幼兒語言能力測試題附答案
- JB∕T 14089-2020 袋式除塵器 濾袋運行維護技術規(guī)范
- 陜西省寶雞市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- 中華人民共和國職業(yè)分類大典電子版
- 畢業(yè)設計小型液壓機主機結構設計與計算
- 19XR開機運行維護說明書
- 全國非煤礦山分布
- 臨床研究技術路線圖模板
- GB∕T 2099.1-2021 家用和類似用途插頭插座 第1部分:通用要求
評論
0/150
提交評論