




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java語(yǔ)言數(shù)尚道科技(北京)Java 語(yǔ)言基礎(chǔ)Java語(yǔ)言基礎(chǔ)關(guān)鍵字、標(biāo)識(shí)符和分隔符數(shù)據(jù)類型-簡(jiǎn)單數(shù)據(jù)類型 自動(dòng)類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換-復(fù)合數(shù)據(jù)類型 Null 運(yùn)算符 表達(dá)式與流程 常量和變量Java語(yǔ)言中的關(guān)鍵字、標(biāo)識(shí)符和分隔符標(biāo)識(shí)符(identifier)一、標(biāo)示符的概念:變量以及后面將要講到的類和方法都需要一定的名稱,這種名稱就叫做標(biāo)識(shí)符。二、標(biāo)示符名規(guī)則:1.2.3.4.5.以字母、_、$開頭,由字母、_、$和數(shù)字組成一定不能夠是Java中的關(guān)鍵字標(biāo)識(shí)符不能包含空格。Java中的標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫注意:在起名字的時(shí),為了提高閱讀性,要盡量有意義,“見名知意”。關(guān)鍵字(KeyWord
2、)一、關(guān)鍵字:是Java語(yǔ)言本身使用的標(biāo)識(shí)符,它有其特定的語(yǔ)法含義。二、所有的Java關(guān)鍵字不能被用作標(biāo)識(shí)符三、Java語(yǔ)言中的關(guān)鍵字都小寫。關(guān)鍵字(KeyWord)Java語(yǔ)言的數(shù)據(jù)類型數(shù)制十進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)據(jù)的表示方法:一以1-9開頭的數(shù)為十進(jìn)制數(shù)二以0開頭的數(shù)為八進(jìn)制數(shù)三以0x開頭的數(shù)為十六進(jìn)制數(shù)Java語(yǔ)言的數(shù)據(jù)類型接口類型:interface數(shù)組復(fù)合數(shù)據(jù)類型類類型數(shù)據(jù)類型布爾類型:boolean字符類型:char基本數(shù)據(jù)類型浮點(diǎn)數(shù)類型:float, double數(shù)值類型整數(shù)類型:byte, short,int,longJava語(yǔ)言的數(shù)據(jù)類型ac strint a = 12;
3、char c = m;String str = “abcde”;abcde堆棧12m0x2244Java語(yǔ)言的數(shù)據(jù)類型整數(shù)int示例1.2表示十進(jìn)制數(shù)2,32位保存。2.077表示八進(jìn)制整數(shù)77,等于十進(jìn)制數(shù)63,32位保存。3.0xBABE表示十六進(jìn)制整數(shù)BABE,等于十進(jìn)制數(shù)47806,32位保存。長(zhǎng)整型long常量示例1.2l或者2L表示十進(jìn)制數(shù)2,64位保存。2.077L或077l表示八進(jìn)制數(shù)77,64位保存。3.0xBABEL或0xBABEl表示十六進(jìn)制整數(shù)BABE,64位保存。浮點(diǎn)數(shù)示例一5.31d,5.31D,5.31雙精度浮點(diǎn)數(shù)。都表示64位保存的二.5.31f,5.31F表示
4、32位保存的單精度浮點(diǎn)數(shù)。字符示例一char類型的常量值必須用一對(duì)單引號(hào)()括起來(lái)。例如:1.a/表示字符a2.t/表示tab鍵3.u?字符,?/表示一個(gè)具體的Unicode是4位十六進(jìn)制數(shù)字邏輯類型(boolean)一邏輯值用boolean(布爾)類型表示。1.有兩個(gè)常量值:true和false,它們?nèi)切憽6﨡ava是一種嚴(yán)格的類型語(yǔ)言,它不布爾類型之間進(jìn)行轉(zhuǎn)換。數(shù)值類型和小結(jié)一 數(shù)制:二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制,表示形式;二.基本數(shù)據(jù)類型:byte、short、int、long、char、float、double、boolean的占用長(zhǎng)度、數(shù)值范圍,后綴形式;Java數(shù)據(jù)類型之間
5、的轉(zhuǎn)換類型轉(zhuǎn)換一 Java語(yǔ)言不進(jìn)行轉(zhuǎn)換。數(shù)值類型和布爾類型之間二.整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算。類型轉(zhuǎn)換一 自動(dòng)類型轉(zhuǎn)換:也稱為隱式類型轉(zhuǎn)換;二 強(qiáng)制類型轉(zhuǎn)換:需要采用顯式類型轉(zhuǎn)換;自動(dòng)類型轉(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強(qiáng)制類型轉(zhuǎn)換一 位數(shù)多的類型向位數(shù)少的類型進(jìn)行轉(zhuǎn)換.二 所有的小數(shù)轉(zhuǎn)換為整數(shù)。三 其一般形式為:(類型)表達(dá)式。問題一 要了解一個(gè)字符在Unicode表中的順序,可以將它轉(zhuǎn)換為int型;二.反過來(lái),也可將一個(gè)整數(shù)轉(zhuǎn)換字符型。 VarDemo.javaJava語(yǔ)言中的運(yùn)算符與表達(dá)式運(yùn)算符按照運(yùn)算符功能來(lái)分,運(yùn)算符有7種:1.賦值運(yùn)算符、2.算術(shù)運(yùn)算符、3.關(guān)系運(yùn)算符、4.條件運(yùn)算符、運(yùn)算符5. 邏輯運(yùn)算符、6. 位運(yùn)
7、算符、7. 其他運(yùn)算符(new, 轉(zhuǎn)換運(yùn)算符)instanceof、強(qiáng)制類型8.另外,算術(shù)運(yùn)算符和賦值運(yùn)算符可以結(jié)合在一起形成算術(shù)賦值運(yùn)算符。運(yùn)算符按照連接操作數(shù)的多少來(lái)分,有1. 一元(目)運(yùn)算符、2. 二元(目)運(yùn)算符、3. 三元(目)運(yùn)算符。算術(shù)運(yùn)算符一 雙目運(yùn)算符+,-,*,/,%二 單目運(yùn)算符+,-,+,-邏輯運(yùn)算符一 包括邏輯與(&)、邏輯或(|)、和邏輯非(!)。二 除此之外,java語(yǔ)言還提供了邏輯運(yùn)算符&&,|。邏輯運(yùn)算符一 利用&、|做運(yùn)算時(shí),運(yùn)算符左右兩邊的表達(dá)式都會(huì)被運(yùn)算執(zhí)行,最后兩表達(dá)式再進(jìn)行與、或運(yùn)算。二.利用&&,|
8、做邏輯運(yùn)算時(shí),如果只計(jì)算運(yùn)算符表達(dá)式左邊的結(jié)果即可確定與、或的結(jié)果,則右邊的表達(dá)式將執(zhí)行。賦值運(yùn)算符(雙目)一 賦值運(yùn)算符“=”用于把運(yùn)算符“=”右側(cè)的數(shù)據(jù)或表達(dá)式賦給左側(cè)的變量。二.在賦值運(yùn)算符兩側(cè)的類型不一致的情況:1.自動(dòng)類型轉(zhuǎn)換2.強(qiáng)制類型轉(zhuǎn)換廣義賦值運(yùn)算符一 +=,-=,*=,/=,%=,&=,|=二 一般形式為:變量名運(yùn)算符=表達(dá)式三目條件運(yùn)算符一 三目條件表達(dá)式的結(jié)構(gòu)為:(條件)?結(jié)果1:結(jié)果2;二 條件表達(dá)式的計(jì)算過程為:首先計(jì)算作為條件的邏輯表達(dá)式或關(guān)系表達(dá)式,返回值為true時(shí)表達(dá)式的值為結(jié)果1,返回值是false時(shí)表達(dá)式的值為結(jié)果2。三目條件運(yùn)算符等同于resul
9、t= a>b ? a-b : b-a;int a=5, b=2, result; if (a>b)result=a-b; elseresult=b-a;三目條件表達(dá)式可取代簡(jiǎn)單的二分支結(jié)構(gòu),書寫簡(jiǎn)單,并有較快的運(yùn)算速度。例如: FindMinMax.java其它運(yùn)算符1.()、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符;2.對(duì)象運(yùn)算符instanceof:某個(gè)具體對(duì)象是否是某個(gè)類(或其它的子類)的一個(gè)實(shí)例化對(duì)象,若是, 則返回true,否則返false;(后面的課程詳細(xì)描述。3.內(nèi)存分配運(yùn)算符new:為數(shù)組和類對(duì)象分配內(nèi)存空間。(后面的課程詳細(xì)描述)常量與變量常量與變量相同之處在于 常量與變量都有作用范圍
10、,可以是局部的,也可以是全局的,全局的又分為是隸屬于類的量(類常量和類變量),還是隸屬于實(shí)例的量(實(shí)例常量和實(shí)例變量); 常量與變量前面都可以限修飾符; 常量與變量可以是簡(jiǎn)單數(shù)據(jù)類型也可以是復(fù)合數(shù)據(jù)類型;常量一 常量:在程序運(yùn)行過程中,其值不變的量。二 Java中的常量使用關(guān)鍵字final修飾。三 final既可以修飾簡(jiǎn)單數(shù)據(jù)類型,也可以修飾復(fù)合數(shù)據(jù)類型。說明一簡(jiǎn)單數(shù)據(jù)類型常量其值一旦確定,就不能被改變。二復(fù)合數(shù)據(jù)類型常量指的是具體的值是可以改變的。不能被改變,而其說明(須)三常量既可以是局部常量,也可以是類常量,還可以是實(shí)例常量。如果是類常量,一般在數(shù)據(jù)類型前加上static關(guān)鍵字修飾。四.
11、常量名一般大寫,多個(gè)單詞之間用下劃線連接。變量一 變量:指在程序執(zhí)行過程中,其數(shù)值可以改變的量。二 變量既可以是簡(jiǎn)單數(shù)據(jù)類型也可以是復(fù)合數(shù)據(jù)類型。三 Java中的變量要遵循“先,再使用”原則四 變量包括變量名和變量值兩部分。變量的分類 StudentDemo.java如果變量是簡(jiǎn)單數(shù)據(jù)類型一 變量名:用標(biāo)識(shí)符命名,對(duì)應(yīng)一定數(shù)量的內(nèi)存單元,其單元數(shù)的多少由變量數(shù)據(jù)類型決定。二.變量值:指定單元存放的具體內(nèi)容。如果變量是復(fù)合數(shù)據(jù)類型一變量名:用標(biāo)識(shí)符命名,對(duì)應(yīng)的內(nèi)存單元,存放的是32位中間地址(heap),稱為。二.變量值:指定實(shí)體的具體內(nèi)容,一般用new加構(gòu)造函數(shù)運(yùn)行時(shí)初始化,具體的值被保留在h
12、eap中。變量的初始化一 全局變量(即成員變量)如果不初始化,則取默認(rèn)值。二 局部變量(即本地變量)必須初始化,否則將出錯(cuò)。變量初始化(續(xù))各種數(shù)據(jù)類型的默認(rèn)值內(nèi)存分配基本類型、對(duì)象句柄流式文件對(duì)象靜態(tài)變量常量?jī)?nèi)存分配變量的一傳值:主要基本數(shù)據(jù)類型1.特點(diǎn):傳遞變量的實(shí)際值,是原值的一個(gè)拷貝,一個(gè)變量值的改變響到另一個(gè)變量的值。影二2.傳址介紹。:主要對(duì)象操作,以后變量(總結(jié))變量的概念:內(nèi)存中的一個(gè)區(qū)域該區(qū)域有的名稱(變量名)和類型(數(shù)據(jù)類型)該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化定義變量的格式:數(shù)據(jù)類型變量名=初始化值變量是通過使用變量名來(lái)這塊區(qū)域的Java是強(qiáng)類型語(yǔ)言,每個(gè)變量必須先類
13、型,后使用.使用變量注意: 變量的作用域:一對(duì) 之間有效變量的分類(總結(jié)) 按被的位置劃分: 成員變量: 類變量 實(shí)例變量 局部變量:方法或語(yǔ)句塊內(nèi)部定義的變量 按所屬的數(shù)據(jù)類型劃分: 基本數(shù)據(jù)類型變量數(shù)據(jù)類型變量Java語(yǔ)言的流程Java程序結(jié)構(gòu)(3種)一 順序結(jié)構(gòu):二 分支選擇結(jié)構(gòu):三 循環(huán)結(jié)構(gòu):分支選擇結(jié)構(gòu)一 分支語(yǔ)句的主要功能是:實(shí)現(xiàn)程序的流程,即根據(jù)一定的條件有選擇地執(zhí)行或跳過特定的語(yǔ)句。二.Java分支語(yǔ)句:1.ifelse語(yǔ)句2.Switch語(yǔ)句一 令狐沖參加比武大會(huì)1.如果獲得第一名,將出任武林盟主2.如果獲得第二名,將出任武當(dāng)掌門3.如果獲得第三名,將出任峨嵋掌門4.否則,將
14、被逐出師門問題解決int mingCi = 1; switch (mingCi) case 1:System.out.println("出任武林盟主");break; case 2:System.out.println("出任武當(dāng)掌門"); break;case 3:System.out.println("出任峨嵋掌門"); break;default:System.out.println("被逐出師門");如果:grade=B則:程序執(zhí)行結(jié)果為:score=0switch (grade) case A: scor
15、e=5;case B: score=4; case C: score=3; default: score=0;如果:grade =B;則:程序執(zhí)行結(jié)果為:score = 4;switch (grade)caseA: score=5;break; case B:score=4;break;caseC: score=3;break; default: score=0; switch語(yǔ)句語(yǔ)法格式switch(表達(dá)式)case 常量1:語(yǔ)句1; break;case 常量2:語(yǔ)句2; break; case 常量N:語(yǔ)句N; break;default:語(yǔ)句; break; SwitchTest.ja
16、va switch語(yǔ)句有關(guān)規(guī)則§switch(表達(dá)式)中表達(dá)式的返回值必須是下述幾種類型之一:分別是基本類型的byte,short,int,char,以及類型的String(只有JavaSE 7 和以后的版本 可以接受String類型參數(shù)),enum和byte,short,int,char的Byte,Short,Integer,Character§case子句中的值必須是常量,且所有case子句中的值應(yīng)是不同的;default子句是任選的;break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后使程序跳出switch語(yǔ)句塊;§§循環(huán)語(yǔ)句一 循環(huán)結(jié)構(gòu)常用的的3種形式1
17、.已知循環(huán)次數(shù)的循環(huán)(for)2.先循環(huán)條件的真值循環(huán)(while)3.后循環(huán)條件的真值循環(huán)(do-while)return語(yǔ)句一return語(yǔ)句用于方法的返回上,當(dāng)程序執(zhí)行到return語(yǔ)句時(shí),終止當(dāng)前方法的執(zhí)行,返回到調(diào)用這個(gè)方法的語(yǔ)句。二. return語(yǔ)句通常位于一個(gè)方法體的最后一行,有帶參數(shù)和不帶參數(shù)兩種形式,帶參數(shù)形式的return語(yǔ)句該方法并返回一個(gè)值。return語(yǔ)句三 當(dāng)方法用void時(shí),說明不需要返回值(即返回類型為空),應(yīng)使用不帶參數(shù)return語(yǔ)句。四.不帶參數(shù)的return語(yǔ)句也可以省略,當(dāng)程序執(zhí)行到這個(gè)方法的最后一條語(yǔ)句時(shí),遇到方法的結(jié)束標(biāo)志“”就自動(dòng)返回到調(diào)用這個(gè)
18、方法的程序中。return語(yǔ)句五帶參數(shù)的return語(yǔ)句有如下語(yǔ)法形式:return表達(dá)式;六.當(dāng)程序執(zhí)行到這個(gè)語(yǔ)句時(shí),首先計(jì)算“表達(dá)式”的值,然后將表達(dá)式的值返回到調(diào)用該方法的語(yǔ)句。七.返回值的數(shù)據(jù)類型必須與方法中的返回值類型一致,可以使用強(qiáng)制類型轉(zhuǎn)換來(lái)使類型一致類與對(duì)象對(duì)象一.日常生活中,對(duì)象是我們認(rèn)識(shí)世界的基本單元,它可以是人,也可以是物,還可以是一件事。二.整個(gè)世界就是由形形的。的“對(duì)象”對(duì)象三.對(duì)象是現(xiàn)實(shí)世界中的一個(gè)實(shí)體,其特征是:1.對(duì)象的標(biāo)示(名稱)唯一;2.對(duì)象的狀態(tài)(屬性、數(shù)據(jù)區(qū))3.對(duì)象的行為(方能)類一 在軟件中,類就是一個(gè)模板,它定義了一類事物的狀態(tài)和行為。二 類是對(duì)現(xiàn)
19、實(shí)世界的抽象,因此類是一種抽象的復(fù)合數(shù)據(jù)類型。類與對(duì)象的關(guān)系一.類和對(duì)象之間是抽象和具體的關(guān)系。類是創(chuàng)建對(duì)象的模板,對(duì)象是類的具體實(shí)例。二.類(class)是總稱,對(duì)象是,因此對(duì)象(object)也叫實(shí)例(instance)。類與對(duì)象小結(jié)一需求中提取類,即抽象的過程。二創(chuàng)建一個(gè)類就是創(chuàng)建一個(gè)新的數(shù)據(jù)類型,實(shí)例化一個(gè)類,就得到一個(gè)對(duì)象。三.類的有兩部分,分別是成員變量和成員方法。類與對(duì)象小結(jié)(續(xù))四 類的成員變量可以是基本類型或符合數(shù)據(jù)類型,也可以是數(shù)組、集合等五 類的成員方法用于處理該類的數(shù)據(jù),是用戶與對(duì)象或?qū)ο笾g的接口。類的定義 類的定義格式如下:類的定義說明關(guān)鍵字class表示類定義的開
20、始一修飾符分為符和類型說明符二類的類型說明符主要有兩個(gè)final和abstract1.類的定義說明(須)類的符有兩個(gè),一個(gè)是public,2.即公共類,另一個(gè)就是默認(rèn),即沒有訪問符。一個(gè)類被定義為公共類,就表示它能夠被其它所有的類和。在一個(gè)Java源程序中只能有一個(gè)public類,這個(gè)類一般含有main方法。類的定義說明(須)不用public定義的類,其只能被同一個(gè)包中定義的類和。對(duì)象的生成、使用和清除構(gòu)造函數(shù)(Constructor)一 構(gòu)造方法(constructor)是一類特殊的成員方法。二 從功能上講,它使用new關(guān)鍵字用來(lái)對(duì)新創(chuàng)建的對(duì)象進(jìn)行初始化的。類名對(duì)象名=new構(gòu)造函數(shù)(實(shí)際參
21、數(shù))構(gòu)造函數(shù)(Constructor)三 從形式上來(lái)講,它有以下特點(diǎn):1.它與類同名;2.它沒有任何返回值;3.除了上述兩點(diǎn)外,在語(yǔ)法結(jié)構(gòu)上與一般的方法相同。new關(guān)鍵字的作用一 為對(duì)象分配內(nèi)存空間。二 引起對(duì)象構(gòu)造方法的調(diào)用。三 為對(duì)象返回一個(gè)(地址)。類的默認(rèn)構(gòu)造函數(shù)一 在Java里,如果一個(gè)類沒有明顯的表明哪一個(gè)類是它的父類,Object類就是它的父類。二.如果類中沒有定義構(gòu)造函數(shù),編譯器會(huì)自動(dòng)創(chuàng)建一個(gè)默認(rèn)的不帶參數(shù)的構(gòu)造函數(shù)。類的默認(rèn)構(gòu)造函數(shù)三 如果程序員為類定義了構(gòu)造函數(shù),Java就為該類創(chuàng)建默認(rèn)的不帶參數(shù)的構(gòu)造函數(shù)。四.注意:如果類中提供的構(gòu)造函數(shù)都不是無(wú)參數(shù)構(gòu)造函數(shù),卻企圖調(diào)用無(wú)
22、參數(shù)構(gòu)造函數(shù)初始化此類的對(duì)象,編譯時(shí)會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤 Singleton.java對(duì)象創(chuàng)建和對(duì)象使用說明對(duì)象由兩部分組成: 對(duì)象的實(shí)體 對(duì)象的p1=new (“Jack”,”Male”,23);對(duì)象對(duì)象的JackMale23p1p1=newp2=p1;(“Jack”,”Male”,23);p1和p2指向同一個(gè)對(duì)象對(duì)象對(duì)象的JackMale23p1p2p1=newp3=new(“Jack”,”Male”,23);(“Jack”,”Male”,23);P1和P3指向不同的對(duì)象對(duì)象對(duì)象的另一個(gè)對(duì)象的對(duì)象p3JackMale23 JackMale23p1Java內(nèi)存一自動(dòng)回收機(jī)制。Java虛擬機(jī)內(nèi)存的回
23、收。線程負(fù)責(zé)二強(qiáng)制回收機(jī)制:Java系統(tǒng)提供了方法“System.gc()”來(lái)強(qiáng)制立即回收(但系統(tǒng)并不保證會(huì)立即進(jìn)行回收)。JAVA自動(dòng)回收機(jī)制一一個(gè)單元是否是的依據(jù)是:該單元所對(duì)應(yīng)的對(duì)象是否仍被程序所用。二.一個(gè)對(duì)象是否仍為程序所用的依據(jù)是:是否有指向該對(duì)象。三 Java的對(duì)所作為收集器自動(dòng)掃描對(duì)象的動(dòng)態(tài)內(nèi)存區(qū),的對(duì)象加標(biāo)記,然后把沒有的對(duì)象收集起來(lái)并出去。JAVA自動(dòng)回收機(jī)制(須)四 java虛擬機(jī)可以自動(dòng)并收集到“”,但一般立即它們的空間。五.Java系統(tǒng)定義了一套回收算法,用來(lái)提高回收的效率。Java內(nèi)存強(qiáng)制回收一 System.gc();二 Java沒有提供析構(gòu)方法,但提供了一個(gè)類似
24、的方法:protectedvoidfinalize()。三 Java虛擬機(jī)在回收對(duì)象單元之前先調(diào)用該對(duì)象的finalize方法,如果該對(duì)象沒有定義finalize方法,則java系統(tǒng)先調(diào)用該對(duì)象默認(rèn)的finalize方法。 J_Finalize.java類的靜態(tài)屬性和靜態(tài)方法程序運(yùn)行時(shí)的內(nèi)存占用存放程序的代碼部分存放程序的全局?jǐn)?shù)據(jù)和靜態(tài)數(shù)據(jù)存放程序動(dòng)態(tài)申請(qǐng)的數(shù)據(jù)存放程序的局部數(shù)據(jù)和參數(shù)代碼區(qū)(code area)數(shù)據(jù)區(qū)(data area)堆區(qū)(heap area)棧區(qū)(stack area)問題問題一:不論產(chǎn)生多少個(gè)對(duì)象,或不存在任何對(duì)象的情況下,某些特定數(shù)據(jù)的份;空間都只有一問題二:某些數(shù)
25、據(jù)或者函數(shù)不要和class綁在一起。object解決方案一 通過關(guān)鍵字static,便可以處理這兩種情況,當(dāng)你將某個(gè)數(shù)據(jù)成員或某個(gè)成員函數(shù)static時(shí),它就不再局限于所屬的classobject上。為二 Java中把這種代表類范圍信息的變量用關(guān)鍵字static修飾。Static的使用場(chǎng)合一 用static修飾的屬性(變量)稱為靜態(tài)屬性,又叫類變量;二 用static修飾的方法稱為靜態(tài)方法,又叫類方法(靜態(tài)方法里,無(wú)this);三 可以用來(lái)修飾初始化語(yǔ)句塊,這樣的語(yǔ)句塊常稱為靜態(tài)初始化語(yǔ)句塊(要跟非靜態(tài)初始化語(yǔ)句塊區(qū)來(lái)) Peson.java Test.java StuDemo.java類的靜
26、態(tài)屬性和靜態(tài)方法一 即使沒有創(chuàng)建該類的具體對(duì)象,類中的static 類成員也會(huì)存在,這時(shí)可以通過:1.類名.靜態(tài)變量2.類名.靜態(tài)方法問題一 你知道m(xù)ain()為什么要用static修飾的嗎?了二 main()方法中的static可以去掉嗎?類的靜態(tài)屬性和靜態(tài)方法static方法中不能直接調(diào)用非static的域或方法(必須通過對(duì)象名)。1.static函數(shù)并不需要先產(chǎn)生任何對(duì)象,就可以通過類名來(lái)調(diào)用。2.3.non-static數(shù)據(jù)/函數(shù)和對(duì)象綁定()。在static函數(shù)中“直接”取用non-static數(shù)據(jù)/函數(shù),會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。靜態(tài)代碼塊與非靜態(tài)代碼塊的異同點(diǎn)一 相同點(diǎn):1.都是在JVM加
27、載類時(shí)且在構(gòu)造方法執(zhí)行之前執(zhí)行,在類中都可以定義多個(gè)。2.一般在代碼塊中對(duì)一些static變量進(jìn)行賦值。靜態(tài)代碼塊與非靜態(tài)代碼塊的異同點(diǎn)二 不同點(diǎn):1.靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行:靜態(tài)代碼塊>非靜態(tài)代碼塊>構(gòu)造方法2.靜態(tài)代碼塊只在第一次new執(zhí)行一次,之后不再執(zhí)行,而非靜態(tài)代碼塊在每new一次就執(zhí)行一次。 staticBlock PuTong.java靜態(tài)代碼塊一靜態(tài)代碼塊只能定義在類里面,它于任何方法,不能定義在方法里面。二靜態(tài)代碼塊里面的變量都是局部變量,只在本塊內(nèi)有效。三靜態(tài)代碼塊會(huì)在類被加載時(shí)自動(dòng)執(zhí)行,而無(wú)論加載者是JVM還是其他的類。靜態(tài)代碼塊四一個(gè)類中定義多個(gè)靜
28、態(tài)代碼塊,執(zhí)行的順序根據(jù)定義的順序進(jìn)行。五靜態(tài)代碼塊只能類的靜態(tài)成員,而不實(shí)例成員。Java封裝封裝的理解一封裝是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅僅對(duì)外公開接口。二大的軟件系統(tǒng)中往往封裝了多個(gè)小的系統(tǒng)。大系統(tǒng)是建立在已有小系統(tǒng)的基礎(chǔ)上的更為復(fù)雜、功能更強(qiáng)大的系統(tǒng)。封裝的理解(須)系統(tǒng)的封裝程度越高,那么它的相對(duì)性就越高,而且使用起來(lái)也更方便。信息隱藏的必要性?1、解決了代碼冗余,滿足代碼更好的可讀性, 代碼的低耦合性;2、安全考慮封裝特性是通過實(shí)現(xiàn)的符號(hào)來(lái)Java符一 public二 Private三 Protected四 默認(rèn)符(沒有權(quán)限修飾符)Java語(yǔ)言的范圍Java語(yǔ)言提供的一同一個(gè)類范
29、圍共有四種:二同一個(gè)包三不同包的子類四不同包的非子類修飾符同一個(gè)類同一個(gè)包不同包的子類不同包的非子類private可以protected可以可以可以public可以可以可以可以package (默認(rèn))可以可以一般而言: java中的成員變量被為private的,java的成員方法被多數(shù)的時(shí)候,被為public的,構(gòu)造方法大為public的,但有時(shí)也被為private的。Java繼承bicycle(superclass)subclassTandembikesMountainbikesRacing bikesis a關(guān)系has a關(guān)系軟件的復(fù)用性復(fù)用其它對(duì)象的代碼有兩種方法:一繼承:繼承是由子對(duì)象
30、完全繼承父對(duì)象的數(shù)據(jù)和操作?!癷s”的關(guān)系。二包容:包容是指把一個(gè)對(duì)象作為另一個(gè)對(duì)象的一部份,從而達(dá)到復(fù)用的目的。“has”的關(guān)系。繼承的理解一繼承是類實(shí)現(xiàn)可重用性和可擴(kuò)充性的關(guān)鍵持征。在繼承關(guān)系下類之間組成網(wǎng)狀的層次結(jié)構(gòu)。二繼承避免公用代碼的重復(fù)開發(fā),減少代碼的冗余;三通過繼承增強(qiáng)一致性,從而減少模塊間的接口和界面。School MasterTeacherStudentEmployeeObject類的繼承一被繼承的類稱為父類(superclass),繼承后產(chǎn)生的類稱為子類(subclass)。二單繼承:如果子類只能有一個(gè)直接父類, 稱為單繼承。u 例如,輪船、客輪;人。三多繼承:如果子類可以
31、有多個(gè)直接父類, 稱為多繼承。u 例如,客輪是輪船和客運(yùn)工具的子類。Java繼承一Java不支持類的多繼承,但支持接口的多繼承。二Java中的繼承通過關(guān)鍵字extends。案例(inheritanceEx).java Student.java Employee.java Manager.java Director.java變量隱藏一變量隱藏:在子類對(duì)父類的繼承中,如果子類的成員變量和父類的成員變量同名,此時(shí)稱為子類隱藏(override)了父類的成員變量。二子類若要父類的同名變量。要用super關(guān)鍵字做前綴加圓點(diǎn)操作符,即super.變量名方法覆蓋一方法覆蓋:在子類中重寫父類的方法,它們的名稱
32、、參數(shù)以及返回類型完全相同。二通過改寫方法體來(lái)完成不同的功能。Super關(guān)鍵字一如果子類調(diào)用父類的構(gòu)造函數(shù),則通過super()調(diào)用來(lái)實(shí)現(xiàn)。二如果子類調(diào)用父類的同名方法,則通過super.方法名()來(lái)實(shí)現(xiàn)。This關(guān)鍵字一this變量代表對(duì)象本身。二當(dāng)類中有兩個(gè)同名變量,一個(gè)屬于類的成員變量,而另一個(gè)屬于某個(gè)特定的方法(方法中的局部變量),使用this區(qū)分成員變量和局部變量。三使用this簡(jiǎn)化構(gòu)造函數(shù)的調(diào)用。this與super的對(duì)比Java每個(gè)類都默認(rèn)地具有null、this、super三個(gè)域,所以在任何類中都可以不加說明就可以直接它們:1.null:代表“空”,用在定義一個(gè)對(duì)象但尚未為其開
33、辟內(nèi)存空間時(shí)。2.this和super:是常用的指代子類對(duì)象和父類對(duì)象的關(guān)鍵字this用于:1.自身對(duì)象的成員變量w this.age;自身對(duì)象的成員方法w this.diaplay();2.3. 調(diào)用自身的構(gòu)造方法w this(“Jack”,Male,10);super用于:1.父類對(duì)象的成員變量w super.age;父類對(duì)象的成員方法w super.display();2.3. 調(diào)用父類的構(gòu)造方法w super(“Jack”,Male,10);注意一 無(wú)論使用this調(diào)用本類構(gòu)造函數(shù),還是使用super調(diào)用父類構(gòu)造函數(shù),都必須是該方法體中的第一條可以執(zhí)行語(yǔ)句。二 否則會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤??偨Y(jié)
34、一繼承時(shí),子類利用父類中定義的方法和變量就像它們屬于子類本身一樣。二構(gòu)造函數(shù)不能被繼承。三當(dāng)通過子類不含參數(shù)的構(gòu)造函數(shù)創(chuàng)建子類對(duì)象時(shí),先執(zhí)行父類不含參數(shù)的構(gòu)造函數(shù),再執(zhí)行子類不含參數(shù)的構(gòu)造函數(shù)。Java多態(tài)Java多態(tài)的概念 Java語(yǔ)言支持兩種多態(tài):動(dòng)態(tài)多態(tài)靜態(tài)多態(tài)Java靜多態(tài)一靜態(tài)多態(tài)性:在編譯時(shí),就可以被系統(tǒng)識(shí)別,也稱為編譯時(shí)多態(tài),也稱為靜態(tài)聯(lián)編,也稱為靜綁定。二Java中,重載(overload)方法采用靜態(tài)聯(lián)編的方法實(shí)現(xiàn)。Java動(dòng)態(tài)多態(tài)性一動(dòng)態(tài)多態(tài)性:在編譯時(shí)不能被系統(tǒng)識(shí)別,而是在運(yùn)行時(shí)才被系統(tǒng)識(shí)別,也稱為運(yùn)行時(shí)多態(tài),也稱為動(dòng)態(tài)聯(lián)編,也稱為動(dòng)綁定。二Java中,覆蓋(overri
35、de)方法、抽象方法和接口采用動(dòng)態(tài)聯(lián)編的方法實(shí)現(xiàn)。方法重載一 方法重載(Overloading):Java在一個(gè)類中,或者父類和子類中定義多個(gè)同名的方法,但這些方法的參數(shù)列表必須不同,即參數(shù)的個(gè)數(shù)不同,或參數(shù)類型不同,或參數(shù)順序不同。這種做法稱為方法重載。二 Java中構(gòu)造方法也是可以重載的。方法重載一注意1:返回類型不能用來(lái)區(qū)分重載的方法。二注意2:如果一個(gè)類中有兩個(gè)同名方法,其參數(shù)列表完全一樣,僅僅返回值類型不同,則編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤方法覆蓋一 在子類中對(duì)父類的方法重寫時(shí),不僅要求參數(shù)列表完全一致,而且其要求:也要滿足以下2個(gè)1.若父類方法定義時(shí)有異常拋出,則子類覆蓋父類該方法時(shí)時(shí),該方法也
36、不能有常拋出,否則編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤。的異2.子類方法不能縮小父類方法的權(quán)限instanceof關(guān)鍵字(向下) 北京人、湖南人、河北人一定都是 反過來(lái),不一定都是北京人 河北人湖南人北京人父類和子類的對(duì)象之間轉(zhuǎn)換Java在父類和子類的對(duì)象之間進(jìn)行轉(zhuǎn)換:1. 自動(dòng)轉(zhuǎn)換(向上)2. 強(qiáng)制類型轉(zhuǎn)換(向下)自動(dòng)轉(zhuǎn)換一子類和父類之間存在著“isa”的關(guān)系,所以子類對(duì)象轉(zhuǎn)換為父類對(duì)象時(shí),是自動(dòng)轉(zhuǎn)換。二或者說向上都是自動(dòng)轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換一當(dāng)父類對(duì)象轉(zhuǎn)換為子類對(duì)象時(shí),必須要強(qiáng)制類型轉(zhuǎn)換?;蛘哒f向下 都是強(qiáng)制類型轉(zhuǎn)換。二格式如下:If(父類對(duì)象名 instanceof 子類名)子類對(duì)象名=(子類名)父類對(duì)象名
37、;else TypeV.javaabstract關(guān)鍵字(抽象類,抽象方法)抽象類和抽象方法一 抽象類:如果一個(gè)類用abstract修飾,則它是一個(gè)抽象類。二 抽象方法:如果一個(gè)方法用abstract修飾,則它是一個(gè)抽象方法;抽象方法是沒有方法體的,以一個(gè)緊跟在后的“;”結(jié)束。注意事項(xiàng)一 如果一個(gè)類繼承自某個(gè)抽象父類,而沒有具體實(shí)現(xiàn)抽象父類中的抽象方法,則必須定義為抽象類。二 抽象類是不能實(shí)例化的,它的作用是提供一個(gè)恰當(dāng)?shù)母割悺R虼艘话阕鳛槠渌惖某?與final類正好相反。三 如果一個(gè)類里有抽象的方法,則這個(gè)類就必須成抽象的。但一個(gè)抽象類中卻可以沒有抽象方法。 TestAbctract.ja
38、va TestFigure.javafinal關(guān)鍵字(final類、final方法、常量)最終類如果一個(gè)類沒有必要再派生子類,通常可以用final關(guān)鍵字修飾,表明它是一個(gè)最終類。1. Public final class Math2. Public final class String最終方法一最終方法:用關(guān)鍵字final修飾的方法稱為最終方法。二最終方法既不能被覆蓋,也不能被重載,它是一個(gè)最終方法,其方法的定義永遠(yuǎn)不能改變。final方法和final類一final類中的方法可以不為final方法,但實(shí)際上final類中的方法都是隱式的final方法。二final修飾的方法不一定要存在于fin
39、al類中。定義類頭時(shí),abstract和final 不能同時(shí)使用。常量一常量:在程序運(yùn)行過程中,其值不變的量。二Java中的常量使用關(guān)鍵字final修飾。三final既可以修飾簡(jiǎn)單數(shù)據(jù)類型,也可以修飾復(fù)合數(shù)據(jù)類型。四final常量可以在的同時(shí)賦初值,也可以在構(gòu)造函數(shù)中賦初值。五如果在常量的同時(shí),使用static修飾,表明這個(gè)量是類常量常量格式例如:final double PI=3.1415926; final String str=“Hello World”;格式:final 數(shù)據(jù)類型 常量名=值說明一簡(jiǎn)單數(shù)據(jù)類型常量其值一旦確定,就不能被改變。二復(fù)合數(shù)據(jù)類型常量指的是不能被改變,而其具體的
40、值是可以改變的。說明(須)三常量既可以是局部常量,也可以是類常量,也可以是常成員變量。如果是類常量,一般在數(shù)據(jù)類型前加上static關(guān)鍵字修飾。四常量名一般大寫,多個(gè)單詞之間用下劃線連接。 FinalTest.java接口(interface)public interface Flyer public void takeOff(); public void land(); public void fly();接口一接口(interface)是一組方法集,接口中包含的方法都是抽象方法,定義方法體的任務(wù)留給實(shí)現(xiàn)該接口的類去完成。二接口是用來(lái)實(shí)現(xiàn)類間(不相關(guān)類)多重繼承功能的結(jié)構(gòu)。接口要點(diǎn)一接口是J
41、ava中的一種復(fù)合數(shù)據(jù)類型,是用interface關(guān)鍵字來(lái)定義的;二接口是一種特殊的“類”“抽象類”;,一種特殊的三接口中所有的方法都默認(rèn)是publicabstract的,并且只有方法頭和參數(shù)列表,沒有方法體;接口要點(diǎn)(須)四接口中所有的變量都默認(rèn)是publicstaticfinal的;五接口中沒有構(gòu)造方法;六接口可以繼承,而且可以多重繼承;接口要點(diǎn)(須)七一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。八接口中的方法體可以由java語(yǔ)言書寫,也可以由其他語(yǔ)言書寫,用其他語(yǔ)言書寫時(shí),接口方法需要用native關(guān)鍵字修飾。接口的功能一通過接口可以實(shí)現(xiàn)不相關(guān)類的相為,而不需要考慮這些類之間的層次關(guān)系。二通過接口可以指明多
42、個(gè)類需要實(shí)現(xiàn)的方法。接口的功能三通過接口可以了解對(duì)象的交互界面,而不需要了解對(duì)象所對(duì)應(yīng)的類。四通過接口可以在運(yùn)行時(shí)動(dòng)態(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 實(shí)現(xiàn)接口修飾符 class A implements IA 修飾符
43、class B extends A implements IB, IC 修飾符class類名extends父類名implements接口 A,接口B,類的成員變量和成員方法;為接口A中的所有方法編寫方法體,實(shí)現(xiàn)接口A; 為接口A中的所有方法編寫方法體,實(shí)現(xiàn)接口B;因?yàn)橹粚?shí)現(xiàn)了一個(gè)方法,所以類Example1需要定義成抽象類。interface IExample void method1(); void method2();abstract class Example1 implements IExample public void method1()/ InterfaceTest1.java注
44、意一一個(gè)類在實(shí)現(xiàn)某個(gè)接口的抽象方法時(shí), 必須以完全相同的方法頭。否則,只是在重載一個(gè)新方法,而不是實(shí)現(xiàn)已有的抽象方法。二接口的抽象方法的限制符默認(rèn)為public,所以類在實(shí)現(xiàn)這些抽象方法時(shí),必須顯式的使用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關(guān)鍵字package關(guān)鍵字軟件(software)和包(pac
46、kage)包幫我們管理大型的軟件系統(tǒng)包可以包含類、接口和子包package關(guān)鍵字shippingreportGUIdomainRiverBargeTruckCompanyVehiclepackage關(guān)鍵字shipping/domain/Company.class Vehicle.class RiverBarge.classTruck.classGUI/reports/VehicleCapacityReport.classthe "shipping" application packagespackage關(guān)鍵字Shippingpackage關(guān)鍵字Java包的理解Java通過關(guān)
47、鍵字package創(chuàng)建包包(package)是類和接口的集合Java用包來(lái)管理名稱空間。包消除了不同組的類中潛在的類名沖突問題package關(guān)鍵字Java包的理解Java里的每一個(gè)類都屬于一個(gè)特定的包“包是類的容器” 包是有層次的java.awt.Colorpackage關(guān)鍵字Java包的理解包定義語(yǔ)句必須是Java源文件中的第一條可執(zhí)行語(yǔ)句在默認(rèn)的情況下,系統(tǒng)會(huì)為每一個(gè) .java 源文件創(chuàng)建一個(gè)無(wú)名包無(wú)名包不能被其他包所,為解決這個(gè)問題,創(chuàng)建有名子的包package關(guān)鍵字包的包的是通過關(guān)鍵字import實(shí)現(xiàn)的import 包名.下一級(jí)包名.的類名;import mylib.;import 包名.下一級(jí)包名.*;im
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年平?jīng)雎殬I(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年安徽糧食工程職業(yè)學(xué)院高職單招(數(shù)學(xué))歷年真題考點(diǎn)含答案解析
- 2025年安徽中澳科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年(2019-2024年)真題考點(diǎn)試卷含答案解析
- 2025年天津?yàn)I海汽車工程職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- GMP基礎(chǔ)知識(shí)課件
- 737機(jī)型培訓(xùn)課件
- 【名校密卷】人教版數(shù)學(xué)四年級(jí)下冊(cè)期中測(cè)試卷(一)及答案
- 蘇州工業(yè)職業(yè)技術(shù)學(xué)院《廣告與數(shù)字營(yíng)銷》2023-2024學(xué)年第二學(xué)期期末試卷
- 平頂山職業(yè)技術(shù)學(xué)院《消防管理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海電力大學(xué)《第二外語(yǔ)(三)(法)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年河北省保定市徐水區(qū)中考一模語(yǔ)文試題(原卷版+解析版)
- 2025屆貴州省安順市高三二模語(yǔ)文試題
- 貿(mào)易術(shù)語(yǔ)及應(yīng)用及試題及答案
- 淘寶網(wǎng)店轉(zhuǎn)讓合同范本
- 2025中國(guó)海洋大學(xué)輔導(dǎo)員考試題庫(kù)
- 新疆維吾爾自治區(qū)普通高職(??疲﹩握姓呓庾x與報(bào)名課件
- 2024年昆明渝潤(rùn)水務(wù)有限公司招聘考試真題
- 我譯網(wǎng)面試題及答案
- 2025-2030中國(guó)小武器和輕武器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 高中主題班會(huì) 高考勵(lì)志沖刺主題班會(huì)課件
- 高三復(fù)習(xí):2025年高中化學(xué)模擬試題及答案
評(píng)論
0/150
提交評(píng)論