Java基礎(chǔ)知識筆記總結(jié)計劃資料_第1頁
Java基礎(chǔ)知識筆記總結(jié)計劃資料_第2頁
Java基礎(chǔ)知識筆記總結(jié)計劃資料_第3頁
Java基礎(chǔ)知識筆記總結(jié)計劃資料_第4頁
Java基礎(chǔ)知識筆記總結(jié)計劃資料_第5頁
已閱讀5頁,還剩245頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java知識——精髓總結(jié)一、java概括與基礎(chǔ)知識6二、方法與數(shù)組19三、面向?qū)ο螅?)28四、面向?qū)ο螅?)39五、異樣辦理和常用類59六、線程技術(shù)77七、會合框架(1)93八、會合框架(2)110九、IO操作(1)123十、IO文件操作(2)135十一、網(wǎng)絡(luò)編程146十二、反射系統(tǒng)162十三、GUI界面181十四、Java高新技術(shù)(1)197十五、Java高新技術(shù)(2)205十六、Java高新技術(shù)(3)215十七、面試題之交通燈管理系統(tǒng)233十八、面試題之銀行業(yè)務(wù)系統(tǒng)241一、java概括與基礎(chǔ)知識61、何為編程?62、Java語言概括,歷史、特色63、什么是跨平臺性?原理是什么?JVM64、Jre和Jdk的差別?75、java虛假機JVM76、Java程序運轉(zhuǎn)系統(tǒng)77、學(xué)習(xí)java注意的地方88、Java語法格式89、代碼說明:單行//,多行/**/,文檔說明/*/810、Java中的表記符811、java中的常量和變量912、Java成員變量和局部變量914、基本數(shù)據(jù)種類變換之向上轉(zhuǎn)型和向下變換1115、Java的運算符1216、表達(dá)式和三目運算符1217、程序流程控制1318、三大循環(huán)結(jié)構(gòu):1519、嵌套循環(huán)與流程控制17二、方法與數(shù)組191、什么是方法(Method)?192、Java中方法的格式:193、方法里的屬性204、方法特色205、什么是方法的重載(Overload)?216、可變參數(shù)227、數(shù)組簡介:228、一維數(shù)組的申明與初始化:239、數(shù)組的使用:2410、分派內(nèi)存空間2511、二維數(shù)組:2612、操作數(shù)組的工具類-Arrays2713、Java5新特色對數(shù)組的支持:28三、面向?qū)ο螅?)281、什么叫面向?qū)ο螅?82、類293、結(jié)構(gòu)方法304、static要點字315、匿名對象326、this要點字327、面向?qū)ο笾庋b328、接見修飾符339、類的設(shè)計分析3410、面向?qū)ο笾^承3411、子類接見父類和方法覆寫3512、super要點字和調(diào)用父類結(jié)構(gòu)方法3613、面向?qū)ο笾鄳B(tài)3714、引用變量種類變換38四、面向?qū)ο螅?)391、基本數(shù)據(jù)種類的包裝類392、基本數(shù)據(jù)種類和包裝類相互變換403、基本種類和String之間的變換414、Object類415、代碼塊426、結(jié)構(gòu)方法的私有化437、Singleton模式(單例模式)餓漢式和懶漢式448、final要點字469、抽象類4610、抽象類的表現(xiàn)-模板模式.......................................................................................4811、接口(interface)........................................................................................................5012、接口的使用.............................................................................................................5113、面向接口編程之制定標(biāo)準(zhǔn)和簡單工廠模式.........................................................5214、面向接口編程之適配器模式.................................................................................5415、接口和抽象類的比較...........................................................................................5516、匿名內(nèi)部類.............................................................................................................5617、列舉類.....................................................................................................................56五、異樣辦理和常用類.........................................................................................................59592、異樣辦理格式...........................................................................................................603、多異樣辦理...............................................................................................................604、異樣的分類...............................................................................................................615、申明異樣(throws)................................................................................................62628、throw和catch同時使用..........................................................................................646410、String方法..............................................................................................................6611、StringBuffer與StringBuilder...............................................................................6812、Math和Random和UUID.....................................................................................7113、Date和Calendar.....................................................................................................7314、System.....................................................................................................................76六、線程技術(shù).........................................................................................................................771、進(jìn)度和線程...............................................................................................................772、創(chuàng)立線程方式...........................................................................................................783、兩種進(jìn)度創(chuàng)立方式比較...........................................................................................794、線程的生命周期.......................................................................................................815、控制線程...................................................................................................................826、多線程安全問題.......................................................................................................847、多線程安全問題的解決方法...................................................................................858、線程通信...................................................................................................................89七、會合框架(1)...............................................................................................................931、會合類&容器......................................................................................................932、Collection接口.........................................................................................................943、Iterator接口..............................................................................................................944、會合遍歷輸出方式...................................................................................................95997、List接口.................................................................................................................1038、List接口中常用類..................................................................................................1049、Map接口................................................................................................................108八、會合框架(2).............................................................................................................1101、Collections類.........................................................................................................1111123、泛型(Generic).........................................................................................................1134、泛型的使用1145、申明多個泛型種類和通配符1186、泛型的上限與下限1197、泛型接口和方法1218、泛型的嵌套(map例子)122九、IO操作(1)1231、IO的概括和File方法1232、遞歸(Recursion)1253、文件過濾器java.io.FilenameFilter1264、流1275、操作流的步驟(要點)1286、字節(jié)流和字符流1297、文件拷貝1318、字節(jié)→字符變換流1349、自動封閉資源的try語句134十、IO文件操作(2)1351、內(nèi)存操作流1352、打印流1373、格式化輸出1394、標(biāo)準(zhǔn)流1405、Scanner(簡單文本掃描器)1416、緩沖流1447、歸并流(SequenceInputStream)145十一、網(wǎng)絡(luò)編程1461、什么是網(wǎng)絡(luò)編程?1462、網(wǎng)絡(luò)通信因素1473、TCP和UDP的聯(lián)系和用途1474、InetAddress與Socket1485、UDP傳輸1496、TCP傳輸1538、小例子159十二、反射系統(tǒng)1621、反射的見解1622、獲得Class對象1633、九個預(yù)約義Class對象1644、利用Class獲得類的屬性信息1655、Class中獲得結(jié)構(gòu)方法Constructor、方法Method、字段Field1676、利用反射創(chuàng)立對象1727、使用反射調(diào)用方法1758、使用反射調(diào)用可變參數(shù)方法1769、使用反射操作字段17810、反射和泛型-反射來獲得泛型信息179十三、GUI界面1811、GUI(圖形用戶界面)1812、布局管理器1823、事件監(jiān)聽系統(tǒng)構(gòu)成1834、Dialog1905、菜單193十四、Java高新技術(shù)(1)1971、Eclipse的使用技巧1972、靜態(tài)導(dǎo)入(1.5特色,利處是不用寫類名)1993、可變參數(shù)2005、基本數(shù)據(jù)種類的自動拆箱與裝箱2016、列舉2017、反射實現(xiàn)框架功能203十五、Java高新技術(shù)(2)2051、自察認(rèn)識JavaBean2052、自察綜合事例和Beanutils工具包2053、講解(Annotation)2084、泛型211十六、Java高新技術(shù)(3)2151、類加載器2152、類加載器的拜托系統(tǒng)2163、一個類加載器的高級問題分析2204、代理的見解與作用2205、動向代理技術(shù)2226、分析JVM動向生成的類2228、實現(xiàn)近似spring的可配置的AOP框架229十七、面試題之交通燈管理系統(tǒng)2331、面向?qū)ο蟮姆治雠c設(shè)計2342、Road類的編寫2343、Lamp類的編寫2364、LampController類的編寫2395、MainClass類的編寫239十八、面試題之銀行業(yè)務(wù)系統(tǒng)2411、需求2412、需求分析2423、NumberManager類2424、NumberMachine類2435、CustomerType列舉類2446、ServiceWindow類2447、MainClass類與Constants類248一、java概括與基礎(chǔ)知識1、何為編程?編程就是讓計算機為解決某個問題而使用某種程序設(shè)計語言編寫程序代碼,并最后獲得結(jié)果的過程。為了使計算機能夠理解人的企圖,人類就必然要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠依據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計算機之間溝通的過程就是編程。2、Java語言概括,歷史、特色是SUN(StanfordUniversityNetwork,斯坦福大學(xué)網(wǎng)絡(luò)公司)1995年推出的一門高級語言。是一種面向Internet的編程語言。跟著Java技術(shù)在web方面的不斷成熟,已經(jīng)成為Web應(yīng)用程序的首選開發(fā)語言。是簡單易學(xué),圓滿面向?qū)ο螅踩孔V,與平臺沒關(guān)的編程語言。java5.0此后的三大技術(shù)框架J2EE(Java2PlatformEnterpriseEdition)公司版在jdk5.0版本后稱為JAVAEE,是為開發(fā)公司環(huán)境下的應(yīng)用程序供應(yīng)的一套解決方案。該技術(shù)系統(tǒng)中包含的技術(shù)如ServletJsp等,主要針對于Web應(yīng)用程序開發(fā)。。J2SE(Java2PlatformStandardEdition)標(biāo)準(zhǔn)版在jdk5.0版本后稱為JAVASE,這是在java基礎(chǔ)階段主要學(xué)習(xí)的內(nèi)容,也是java的基礎(chǔ),此后不管從事Android開發(fā)或許是物聯(lián)網(wǎng)+云計算的開發(fā),等是建立在JSE基礎(chǔ)上的,所以該技術(shù)是java的最核心技術(shù),主要上課內(nèi)容.。J2ME(Java2PlatformMicroEdition)小型版在jdk5.0版本此后稱為JAVAME,該技術(shù)多應(yīng)用于一些電子產(chǎn)品的嵌入式開發(fā),從前在手機開發(fā)上應(yīng)用的也比好多,但是跟著智好手機的發(fā)展,現(xiàn)在手機應(yīng)用程序(比方Android程序)的開發(fā)已經(jīng)不再使用該技術(shù)。3、什么是跨平臺性?原理是什么?JVM所謂跨平臺性,是指java語言編寫的程序,一次編譯后,能夠在多個系統(tǒng)平臺上運轉(zhuǎn)。實現(xiàn)原理:Java程序是經(jīng)過java虛假機在系統(tǒng)平臺上運轉(zhuǎn)的,只需該系統(tǒng)能夠安裝相應(yīng)的java虛假機,該系統(tǒng)就能夠運轉(zhuǎn)java程序。(注意不是能在全部的平臺上運轉(zhuǎn),要點是該平臺能否能安裝相應(yīng)的虛假機)。我的總結(jié):Java程序之所以能夠?qū)崿F(xiàn)跨平臺運轉(zhuǎn),是因為它根本就不直接運轉(zhuǎn)在任何基層平臺上,而是需要在哪里運轉(zhuǎn),就在哪里(如Windows平臺)起初準(zhǔn)備好自己的Java平臺,而這但是但是是安裝和配置一個軟件而已!4、Jre和Jdk的差別?JRE(:JavaRuntimeEnvironment),java運轉(zhuǎn)環(huán)境。包含Java虛假機(JVMJavaVirtualMachine)和Java程序所需的核心類庫等,假如想要運轉(zhuǎn)一個開發(fā)好的Java程序,計算機中只需要安JRE即可。JDK:(JavaDevelopmentKitJava)開發(fā)工具包。JDK是供應(yīng)給Java開發(fā)人員使用的,此中包含了java的開發(fā)工具,也包含了JRE。所以安裝了JDK,就不用在獨自安裝JRE了。此中的開發(fā)工具:編譯工具(javac.exe)打包工具(jar.exe)等簡單而言:使用JDK開發(fā)完成的java程序,交給JRE去運轉(zhuǎn)。我的總結(jié):必然嫻熟的記憶,核心類庫,開發(fā)工具!5、java虛假機JVMJavaVirtualMachine

,簡稱

JVM;它是運轉(zhuǎn)全部

Java程序的抽象計算機

,是

Java語言的運轉(zhuǎn)環(huán)境,它是

Java

最具吸引力的特性之一,

JVM

讀取并辦理編譯過的與平臺沒關(guān)的字節(jié)碼

(class)文件。Java編譯器針對JVM產(chǎn)生class文件,所以是獨立于平臺的。Java講解器負(fù)責(zé)將JVM的代碼在特定的平臺上運轉(zhuǎn)。Java虛假機是不跨平臺的.6、Java程序運轉(zhuǎn)系統(tǒng)編譯:javac運轉(zhuǎn):java

文件名類名

.文件后綴名我的總結(jié):

Java

程序的構(gòu)成:

Java

源文件,字節(jié)碼文件。7、學(xué)習(xí)java注意的地方Java語言拼寫上嚴(yán)格區(qū)分大小寫;一個Java源文件里能夠定義多個Java類,但此中最多只能有一個類被定義成public類;若源文件中包含了public類,源文件必然和該public類同名;一個源文件中包含N個Java類時,編譯后會生成N份字節(jié)碼文件,即每個類都會生成一份獨自的class文件,且字節(jié)碼文件名和其對應(yīng)的類名相同;我的總結(jié):一個Java源文件只定義一個類,不相同的類使用不相同的源文件定義;將每個源文件中獨自定義的類都定義成public的;保持Java源文件的主文件名與源文件中的類名一致;8、Java語法格式任何一種語言都有自己的語法例則,Java也相同,既然是規(guī)則,那么知道其如何使用就能夠了。代碼都定義在類中,類由class來定義,區(qū)分publicclass和class;代碼嚴(yán)格區(qū)分大小寫,如main和Main是不相同的;Java中的表記符與要點字;說明;main方法的作用:程序的進(jìn)口保證程序的獨立運轉(zhuǎn)JVM調(diào)用9、代碼說明:單行//,多行/**/,文檔說明/*/1.單行說明//://后到本行結(jié)束的全部字符會被編譯器忽視;2.多行說明/**/:/**/之間的全部字符會被編譯器忽視3.文檔說明/*/:在/*/之間的全部字符會被編譯器忽視,java獨有的(用于生成文檔);我的總結(jié):多行和文檔說明都不可以夠嵌套使用。10、Java中的表記符可簡單理解為在Java程序中為了加強閱讀性自定義的名稱。比方:類名,方法名,變量名等。命名規(guī)則:由字母、數(shù)字、下劃線、$構(gòu)成,不可以夠以數(shù)字開頭注意:此處的字母還能夠夠是中文,日文等;大小寫敏感不得使用java中的要點字和保存字別用JavaAPI里面的類名作為自己的類名。11、java中的常量和變量變量的見解:占有著內(nèi)存中的某一個積蓄地區(qū);該地區(qū)有自己的名稱(變量名)和種類(數(shù)據(jù)種類);該地區(qū)的數(shù)據(jù)能夠在同一種類范圍內(nèi)不斷變化;為何要定義變量:用來不斷的寄存同一種類的常量,并能夠重復(fù)使用;使用變量注意:變量的作用范圍,初始化值定義變量的格式:數(shù)據(jù)種類變量名=初始化值;注:格式是固定的,記著格式,以不變應(yīng)萬變。作用范圍:定義開始到定義它的代碼塊結(jié)束;同一范圍內(nèi),不允好多個個局部變量命名矛盾12、Java成員變量和局部變量局部變量:不是申明在類體括號里面的變量;局部變量使用前必然初始化值;局部變量沒有默認(rèn)初始化值;局部變量的作用域是從定義開始到定義它的代碼塊結(jié)束;成員變量:在方法體外,類體內(nèi)申明的變量,又稱字段(Field)或全局變量;(其實Java中沒有全局變量,因為Java是面向?qū)ο笳Z言,全部變量都是類成員)成員變量的作用域是整個類中;我的總結(jié):注意成員變量和局部變量的差別packagereviewDemo;publicclassDemo2{publicstaticvoidmain(String[]args){inti;System.out.println(i);}}備注:局部變量調(diào)用前沒有初始化,所以編譯的時候就會報錯!packagereviewDemo;publicclassDemo2{staticinti;publicstaticvoidmain(String[]args){System.out.println(i);}}備注:此時i為全局變量,未初始化會被賞賜默認(rèn)的初始化值!程序正確!我的總結(jié):局部變量是定義在方法中的變量,,,出了該方法就不可以夠接見該變量了....成員變量是在類中定義,,,,并且在類的成員方法中都能接見的變量..13、基本數(shù)據(jù)種類在數(shù)據(jù)種類中,最常用也是最基礎(chǔ)的數(shù)據(jù)種類,被稱作基本數(shù)據(jù)種類。能夠使用這些種類的值來代表一些簡單的狀態(tài)。Java語言的基本數(shù)據(jù)種類總合有以下8種,下面是依據(jù)用途區(qū)分出的4個種類:定點種類:整數(shù)型是一類代表整數(shù)值的種類。當(dāng)需要代表一個整數(shù)的值時,能夠依據(jù)需要從4各樣類中精選適合的,假如沒有特別要求的話,一般選擇int種類。4種整數(shù)型差別主要在每個數(shù)據(jù)在內(nèi)存中占用的空間大小和代表的數(shù)值的范圍。浮點種類:小數(shù)型是一類代表小數(shù)值的種類。當(dāng)需要代表一個小數(shù)的值時,能夠依據(jù)需要從以下2種種類中精選適合的。假如沒有特別要求,一般選擇double種類。因為小數(shù)的積蓄方式和整數(shù)不相同,所以小數(shù)都有必然的精度,所以在計算機中運算時不夠精確。依據(jù)精度和積蓄區(qū)間的不相同,設(shè)計了兩種小數(shù)種類。字符型:字符型代表特定的某個字符,依據(jù)前面介紹的知識,計算機中都是以字符集的形式來保存字符的,所以字符型的值實質(zhì)但是字符集中的編號,而不是實質(zhì)代表的字符,由計算機完成從編號變換成對應(yīng)字符的工作。Java語言中為了更為方便國際化,使用Unicode字符集作為默認(rèn)的字符集,該字符集包含各樣語言中常有的字符。在程序代碼中,字符使用一對單引號加上需要表達(dá)的字符來表記,例如’A’、’a’等,自然也能夠直接使用字符編碼,也就是一個非負(fù)整數(shù)進(jìn)行表示。布爾型:布爾型代表邏輯中的建立和不可以夠立。Java語言中使用要點字true立。布爾型是積蓄邏輯值的種類,其實好多程序中都有邏輯值的見解,

代表建立,false代表不可以夠Java把邏輯的值用布爾型來進(jìn)行表達(dá)。14、基本數(shù)據(jù)種類變換之向上轉(zhuǎn)型和向下變換向上變換:整型,字符型,浮點型的數(shù)據(jù)在混淆運算中相互變換,變換時依據(jù)以下原則:容量小的種類可自動變換為容量大的數(shù)據(jù)種類;byte,short,char

int

long

float

doublebyte,short,char之間不會相互變換,他們在計算時第一會變換為

int

種類。boolean

種類是不可以夠夠變換為其余基本數(shù)據(jù)種類。Eg:inti=123;longl=i;//自動變換,不需強轉(zhuǎn)floatf=3.14F;doubled=f;向下變換:整型,字符型,浮點型的數(shù)據(jù)在混淆運算中相互變換,變換時依據(jù)以下原則:容量小的種類可自動變換為容量大的數(shù)據(jù)種類;byte,short,char

int

long

float

doublebyte,short,char之間不會相互變換,他們在計算時第一會變換為

int

種類。boolean

種類是不可以夠夠變換為其余基本數(shù)據(jù)種類。Eg:longl=123L;inti=(int)l;//必然強轉(zhuǎn)doubled=3.14;floatf=(float)d;我的總結(jié):種類轉(zhuǎn)變小轉(zhuǎn)大,自動!自動種類變換(也叫隱式種類變換)大轉(zhuǎn)小,強轉(zhuǎn)!強迫種類變換(也叫顯式種類變換)15、Java的運算符運算符是一種特別符號,用以表示數(shù)據(jù)的運算、賦值和比較等共分以下幾種:算術(shù)運算符(+、—、*、/、%)賦值運算符(=、+=、-=、*=、/=,、%=)關(guān)系運算符(>、>=、<、<=、!=)條件運算符(&&、||、!&、|、^)位運算符(&、|、^、~、>>、<<、<<<、>>>)我的總結(jié):邏輯運算符用于連結(jié)布爾型表達(dá)式,在Java中不可以夠夠?qū)懗?<x<6,應(yīng)當(dāng)寫成x>3&x<6?!?”和“&&”的差別:單與時,左邊不論真假,右側(cè)都進(jìn)行運算;雙與時,假如左邊為真,右側(cè)參加運算,假如左邊為假,那么右側(cè)不參加運算?!皘”和“||”的差別同理,雙或時,左邊為真,右側(cè)不參加運算?!癪”與“|”不相同之處是:當(dāng)左右都為true時,"^"結(jié)果為false。16、表達(dá)式和三目運算符是由數(shù)字、運算符、數(shù)字分組符號(括號)等以能求得數(shù)值的存心義擺列的序列;a+b3.14+a(x+y)*z+100booleanb=i<10&&(i%10!=0)表達(dá)式的種類和值:對表達(dá)式中操作數(shù)進(jìn)行運算獲得的結(jié)果是表達(dá)式的值。表達(dá)式值的數(shù)據(jù)種類即為表達(dá)式的種類。表達(dá)式的運算序次依據(jù)運算符的先從高到低的序行;先相同的運算符依據(jù)起初定的合方向行;“三目運算符”,法格式:x?y:z;此中

x

boolean型表達(dá)式,先算

x的,若

true,整個三目運算符的果是表達(dá)式y(tǒng)的,否就是

z的。package

reviewDemo;publicclassDemo2{publicstaticvoidmain(String[]args){Strings="lz";s=(s=="lz"?"正確":"");System.out.println(s);}}出:正確17、程序流程控制序構(gòu)分支構(gòu)(條件構(gòu))循構(gòu)控制循構(gòu)序構(gòu):假如代里沒有流程控制,程序是至上而下一行一行行的,一條句行完此后行下一條句,直到程序的最后。if句:基本法:if(表達(dá)式){方法體}elseif(表達(dá)式){方法體}else(方法體)幾種形式:三種格式:if(條件表達(dá)式){行句;}if(條件表達(dá)式){行句;}else{行句;}if(條件表達(dá)式){行句;}elseif(條件表達(dá)式){行句;}??else{行句;}publicclassIf3{publicstaticvoidmain(Stringargs[]){inti=3;if(i>5){System.out.println("變量i大于5");}elseif(i>4){System.out.println("變量i小于4");}else{System.out.println("其余");}}}switch

控制語句格式:switch(表達(dá)式){case

表達(dá)式可能的結(jié)果值履行語句;

1:break;case

表達(dá)式可能的結(jié)果值履行語句;

2:break;...default:履行語句;break;//最后這個一般不寫}備注:case之間與default沒有序次。先履行第一個case,都沒有般配的case值履行結(jié)束switch語句的兩種狀況:碰到break,switch語句履行結(jié)束。假如般配的case或許default沒有對應(yīng)的break,那么程序會從第一次般配的連續(xù)向下履行,運轉(zhuǎn)能夠履行的語句,直到碰到break或許switch結(jié)束為止。

default。case語句開始classswitch2{publicstaticvoidmain(String[]args){inta=7,b=5;switch(a-b){case3://表達(dá)式可能的值;{System.out.println("33!");}break;case4:{System.out.println("44!");}break;default://都沒有履行則履行該語句!System.out.println("其余的");}}}18、三大循環(huán)結(jié)構(gòu):用于辦理需要重復(fù)履行的操作;依據(jù)判斷條件的建立與否,決定程序段落的履行次數(shù),而這個程序段落我們稱為循環(huán)體;while:起初不需要知道循環(huán)履行多少次;dowhile:同上,但是最少要履行一次(先做,后判斷);for:需要知道循環(huán)次數(shù);循環(huán)結(jié)構(gòu)(while&dowhile)while語句格式:while(條件表達(dá)式值為true){履行語句;}dowhile語句格式:do{履行語句;}while(條件表達(dá)式值為true);我的總結(jié):dowhile特色是不論條件能否知足,循環(huán)體最少被履行一次。循環(huán)里的條件表達(dá)式不可以夠直接寫false或直接寫結(jié)果是false的表達(dá)式,但是能夠使用變量來傳達(dá)false值;循環(huán)結(jié)構(gòu)(for)格式:for(初始化表達(dá)式(1);循環(huán)條件表達(dá)式(2);循環(huán)后的操作表達(dá)式(3)){履行語句;(4)}履行序次:(1)→(2)→(4)→(3)→(2)→(4)→(3)備注:1,for里面的3個表達(dá)式運轉(zhuǎn)的序次,初始化表達(dá)式只讀一次,判斷循環(huán)條件,為真就履行循環(huán)體,此后再履行循環(huán)后的操作表達(dá)式,接著連續(xù)判斷循環(huán)條件,重復(fù)找個過程,直到條件不知足為止。2,while

for

能夠交換,差別在于

for

為了循環(huán)而定義的變量在

for

循環(huán)結(jié)束就在內(nèi)存中釋放。而while循環(huán)使用的變量在循環(huán)結(jié)束后還能夠夠連續(xù)使用。3,最簡單無量循環(huán)格式:while(true),for(;;),無量循環(huán)存在的原由是其實不知道循環(huán)多少次,而是依據(jù)某些條件,來控制循環(huán)。Eg:用三種循環(huán)控制求出100以內(nèi)前5個3的倍數(shù)的數(shù)字;classwhile{publicstaticvoidmain(String[]args){inti=1,k=0;while(i<=100){if(i%3==0){if(k<5)System.out.println(i);k++;}i++;}}}classdowhile{publicstaticvoidmain(String[]args){inti=1,k=0;do{if(i%3==0){if(k<5)System.out.println(i);k++;}i++;}while(i<=100);}}classfor{publicstaticvoidmain(String[]args){inti=1,k=0;for(;i<100;i++){if(i%3==0&&k<5){System.out.println(i);k++;}}}}19、嵌套循環(huán)與流程控制嵌套循環(huán):循環(huán)里套循環(huán)假定外循環(huán)的循環(huán)次數(shù)是*n次。

m次,內(nèi)循環(huán)的循環(huán)次數(shù)是

n次,那么內(nèi)層循環(huán)的循環(huán)次數(shù)需要

mEg:利用for循環(huán)語句的嵌套打印出乘法口訣表classbreak1{publicstaticvoidmain(String[]args){for(inti=1;i<=10;i++)//定義i與j的值必然在for循環(huán)里面,不然每次跳出循環(huán)從頭履行就無法取值{for(intj=1;j<=10;j++){if(j<=i)System.out.print(j+"*"+i+"="+i*j+"");//小注意:print()括號里面必然傳達(dá)參數(shù),println()無量制!}System.out.println();}}}流程控制break語句、continue語句;break:停止該層循環(huán);continue:跳過該層循環(huán)注:①:若這兩個語句走開應(yīng)用范圍,存在是沒存心義的。②:這個兩個語句后邊都不可以夠有語句,因為履行不到。③:continue語句是跳過本次循環(huán),連續(xù)下次循環(huán)。④:標(biāo)簽的出現(xiàn),能夠讓這兩個語句作用于指定的循環(huán)。Eg:package

reviewDemo;publicclassDemo2{publicstaticvoidmain(String[]args){inti=1;for(;i<10;i++){System.out.println(i);if(i==8){break;//流程控制,不會圓滿履行!}}}}二、方法與數(shù)組第二篇:1、什么是方法(Method)?方法是一了特定功能的代的會合。方法在法上的功能主要有以下兩個:①:構(gòu)化代將代依據(jù)功能行,使代的構(gòu)比清楚,簡單和改正,也就是程序的可性。②:減少代重復(fù)一個固定的功能,可能會在程序中多次使用,在使用只需要用寫好的方法,而不用重復(fù)寫的功能代。方法在寫需要注意以下兩點:①:方法的一個圓滿的功能,所以在寫要考到各樣可能的狀況,并每種狀況做出適合的理。②:通用性(可重復(fù)利用)方法的是一種功能,在,能夠依據(jù)需要,使方法具必然的通用性,除非必需,否不要寫用的方法。在Java言中,適合的使用方法,將使程序更為雅,便于和使用。我的:方法:一段可重復(fù)使用的代段;程序中完成獨立功能的一段代的會合。2、Java中方法的格式:[修符]

返回型

方法名

([參數(shù)型

形式參數(shù)

1,參數(shù)型

形式參數(shù)

2,??

]){行句

;

[return

返回

;]//需要的}參數(shù)列表(參數(shù)的型

,參數(shù)的個數(shù),參數(shù)的序)我的:只需上述有一個不一,那么個參數(shù)列表就不一!于方法而言,即使同名也不是同一個方法,也就是下面的方法名。3、方法里的屬性接見控制符:接見控制符限制方法的可見范圍,或許說是方法被調(diào)用的范圍。制符有四種,按可見范圍從大到小挨次是:public、protected,無接見控制符

方法的接見控,private。此中無接見控制符不書寫要點字即可。詳盡的范圍在后續(xù)有詳盡介紹。形式參數(shù):在方法被調(diào)用時用于接收外界輸入的數(shù)據(jù)。實參:調(diào)用方法時實質(zhì)傳給方法的數(shù)據(jù)。返回值:方法在履行完成后返還給調(diào)用它的環(huán)境的數(shù)據(jù)。返回值種類:起初商定的返回值的數(shù)據(jù)種類,如無返回值,必然給出返回種類

void。方法署名:方法名和方法的參數(shù)列表(能差別方法);//最要點的java語言中調(diào)用方法:對象名.方法名(實參列表)。實參的數(shù)量、數(shù)據(jù)種類和序次必然和所調(diào)用方法申明的形參列表般配。return語句停止方法的運轉(zhuǎn)并指定要返回的數(shù)據(jù)。4、方法特色它能夠?qū)崿F(xiàn)獨立的功能;必然定義在類里面;它只有被調(diào)用才會履行;它能夠被重復(fù)使用;方法結(jié)束后方法里的對象失掉引用

;如何定義一個功能,并經(jīng)過方法表現(xiàn)出來:①明確該功能運算后的結(jié)果.明確返回值種類;②明確在實現(xiàn)該功能過程中能否有未知內(nèi)容參加運算,確立參數(shù)列表

;Eg:package

reviewDemo;/player的值分別是1,2,3或許其余值時,該方法返回“大明”,“二明”,“小明”,“我沒有這個孩子”。*/publicclassDemo2{publicstaticvoid

main(String[]args){intplayer=5;System.out.println(

"返回的結(jié)果是:

"+show(player));}publicstaticswitch(p){case1:returncase2:

Stringshow("大明";

int

p){return"二明";case3:return"小明";default:return"我沒有這個孩子!";}}}5、什么是方法的重載(Overload)?見解:在同一個類中,同意存在一個以上的同名方法,只需它們的參數(shù)個數(shù)或許參數(shù)種類或參數(shù)序次不相同即可。存在的原由:障蔽了一個對象的同一類方法因為參數(shù)不相同所造成的差別。特色:與返回值種類沒關(guān),只看參數(shù)列表。以下是方法重載的示例:publicvoida(inta){}publicinta(){}publicvoida(inta,Strings){}Eg:classChongzai{publicstaticvoidmain(String[]args){intret=name(3,4,5);System.out.println(ret);}publicstaticintname(inta,intb){intc=a+b;returnc;}publicstaticintname(inta,intb,intm)//

這就叫做方法的重載,只要參數(shù)列表不相同。利處:用戶使用時限制很小;{intc=a+b+m;returnc;}}我的總結(jié):方法重載,方法名相同,但是參數(shù)列表不一致?。ê头椒ǜ矊懖幌嗤椒ǜ矊懙姆椒蛥?shù)列表都必然相同),注意方法重載和方法覆寫的不相同!6、可變參數(shù)從java5開始出現(xiàn)了可變參數(shù),這是對java方法及數(shù)組的拓展!方法中能夠接受的參數(shù)不再是固定個數(shù)的,而是跟著詳盡需求傳達(dá)的多少來決定。定義格式:返回值種類方法名(參數(shù)種類...形式參數(shù)){}可變參數(shù)的特色:只能出現(xiàn)在參數(shù)列表的最后;...位于變量種類和變量名之間,前后有無空格都能夠;調(diào)用可變參數(shù)的方法時,編譯器為該可變參數(shù)隱含創(chuàng)立一個數(shù)組,接見可變參數(shù)。

在方法體中以數(shù)組的形式Eg:package

reviewDemo;import

java.util.Arrays;publicclassDemo6{publicstaticvoidmain(String[]args){int[]age={1,2,3,69,36,636,459};show(age);}public

static

void

show(

int

...a){/

/此時這里寫的就是可變參數(shù),和數(shù)組的作用相同!把數(shù)組給打印出來!System.out.println(Arrays.toString(a));}}7、數(shù)組簡介:數(shù)組(Array)是Java語言中內(nèi)置的一種基本數(shù)據(jù)積蓄結(jié)構(gòu),平常的理解,就是一組數(shù)的會合,目的是用來一次積蓄多個數(shù)據(jù)。數(shù)組是程序中實現(xiàn)好多算法的基礎(chǔ),能夠在必然程度上簡化代碼的書寫。備注:1.數(shù)組的利處:數(shù)組里的每個元素都有編號,

編號從

0開始,并且挨次遞加,方便操作這些元素;使用Java數(shù)組:必然先申明數(shù)組,再給該數(shù)組分派內(nèi)存;數(shù)組對應(yīng)在內(nèi)存中一段連續(xù)空間。數(shù)組元素必然是相同數(shù)據(jù)種類,也能夠是引用數(shù)據(jù)種類,但是同一個數(shù)組中的元素必然是同一類數(shù)據(jù)種類。8、一維數(shù)組的申明與初始化:一維數(shù)組:能夠理解為一列多行、種類相同的數(shù)據(jù),此中每個數(shù)據(jù)被稱為數(shù)組元素;一維數(shù)組的申明方式:typevarName[];

type[]varName;(

介紹)Eg:intage[];int[]age;數(shù)組的長度一旦確立,就不可以夠改變,也就數(shù)組是定長的;我的總結(jié):java語言申明數(shù)組的時候不可以夠指定其長度(元素的個數(shù))Eg:inta[5];//

非法初始化:Java中的數(shù)組必先初始化才能夠使用,所謂初始化就是為數(shù)組的數(shù)組元素分派內(nèi)存,并為每個數(shù)組元素賦值;數(shù)組初始化的兩種方式:靜態(tài)初始化:初始化時由我們自己指定每個數(shù)組元素的初始值,由系統(tǒng)決定需要的數(shù)組長度;格式:數(shù)組名=new數(shù)組種類[]{元素1,元素2,元素3...元素n};簡化語法:數(shù)組名={元素1,元素2,元素3...元素n};動向初始化:初始化時由我們指定數(shù)組的長度,由系統(tǒng)為數(shù)組元素分派初始值;格式:數(shù)組名=new數(shù)組種類[數(shù)組長度];我的總結(jié):不可以夠靜態(tài)和動向初始化同時使用:也就是說不可以夠同時指定數(shù)組的長度和元素;Eg:packagereviewDemo;/申明數(shù)組及初始化*/publicclassDemo3{publicstaticvoidmain(String[]args){int[]age=newint[10];//動向初始化for

(inti=0;i<age.age[i]=i;System.out.print(age[i]+

length"

;i++){");}}}輸出:01234567899、數(shù)組的使用:Java語言的數(shù)組索引是從0開始的,也就是說數(shù)組里的第一個元素的索引是0,第二個元素的索引是1,挨次能夠類推。常有操作:給數(shù)組元素賦值數(shù)組名[索引]=數(shù)組種類的值;接見數(shù)組元素數(shù)組種類變量=數(shù)組名[索引];獲得數(shù)組的長度intlen=數(shù)組名.length;//length是數(shù)組的屬性遍歷數(shù)組(備注:length屬性和循環(huán)語句)數(shù)組元素的索引范圍(0,長度—1)Eg:判斷數(shù)組能否重復(fù)packagereviewDemo;/判斷數(shù)組能否重復(fù)*/publicclassDemo3{publicstaticvoidmain(String[]args){int[]age={1,2,3,4,5,6,5};for(inti=0;i<age.length-1;i++){//雙層循環(huán),定住一個,再考慮下一個!for(intj=i+1;j<age.length;j++){if(age[i]==age[j]){System.out.println("有重復(fù)的!"+i+""+j);break;}}}}}求最大值:packagereviewDemo;publicclassDemo4{publicintintfor

staticvoidmain(String[]args){age[]=newint[]{12,26,3,60,55,6,48,4,98};max=age[0];(inti=0;i<age.length;i++){if(max<age[i]){max=age[i];}}System.out.println(max);}}經(jīng)典用法:冒泡法排序packagereviewDemo;importjava.util.Arrays;冒泡排序publicclassDemo6{publicstaticvoidmain(String[]args){int[]age={1,2,36,363,56,95,12,32,1232,3263};for

(intfor

(if

i=0;i<j=i+1;j<=age.(age[i]>age[j]){inttemp=age[i];age[i]=age[j];age[j]=temp;

length

;i++){length

-1;j++){}}}System.

out.println(Arrays.

toString

(age));}}//輸出為:[1,2,12,32,36,56,95,363,1232,3263]10、分派內(nèi)存空間分派內(nèi)存空間數(shù)組名=new數(shù)據(jù)種類[數(shù)組長度];new要點字用來實現(xiàn)為數(shù)組或?qū)ο蠓峙蓛?nèi)存數(shù)組擁有固定的長度。獲得數(shù)組的長度:

數(shù)組名

.length定義數(shù)組+分派內(nèi)存空間數(shù)據(jù)種類[]數(shù)組名=new數(shù)據(jù)種類[數(shù)組長度];定義數(shù)組時不指定長度,分派空間時指定數(shù)組長度;如:Stringcities[]=newString[6];數(shù)組元素:數(shù)組名[下標(biāo)值];數(shù)組下標(biāo)從0開始scores[0]=75;數(shù)組的內(nèi)存分派棧內(nèi)存和堆內(nèi)存如定義一個數(shù)組int[]scores將在棧內(nèi)存中為scores分派內(nèi)存空間,其值是一個不確立的值。當(dāng)履行語句scores=newint[5]時,將在堆內(nèi)存分派連續(xù)5個空間,每個空間4個字節(jié),用于寄存整型數(shù)據(jù),其初始值為0,此后將該段空間首地點,也就是第一個元素的地點,比方0*3000,賦給scores變量。該地點相當(dāng)于一個指針,指向堆內(nèi)存中分派的空間。此時堆內(nèi)存中分派的5個空間能夠分別使用scores[0],向抵達(dá)scores[4]來表示。當(dāng)履行四個賦值語句時,分別用指定值填補到對應(yīng)元素地點。假如此時將null值賦給scores時,scores變量將不再指向任何地點,此時堆內(nèi)存中分派的空間就變?yōu)榱死衫厥掌髟谀骋粫r間進(jìn)行回收。在方法中定義的變量,包含基本數(shù)據(jù)種類變量和引用數(shù)據(jù)種類變量,都將在棧內(nèi)存中分派空間,當(dāng)超出變量作用范圍后,自動回收我的總結(jié):初始化=定義數(shù)組+分派空間+賦值11、二維數(shù)組:二維數(shù)組:(實質(zhì)上是一個一維數(shù)組,它的每一個元素又是一個一維數(shù)組能夠看做是一張表格。初始化:動向初始化

),int[][]

arr=newint[3][2];定義了一個二維數(shù)組,此中有

3個一維數(shù)組,每一個一維數(shù)組中有

2個元素靜態(tài)初始化int[][]int[][]

arr=newint[][]{{1,2},{3,4},{5,6}};arr={{1,2},{3,4},{5,6}};Eg:publicclassDemo3{publicstaticvoidmain(String[]args){intage[][]=newint[][]{{1,2},{3,4},{5,6,7}};System.out.println(age[0].length);//2System.out.println(age[2].length);//3}}12、操作數(shù)組的工具類-ArraysstaticintbinarySearch(type[]a,typekey)

使用二分搜尋法來搜尋

key元素在數(shù)組中的索引;若a數(shù)組不包含

key,返回負(fù)數(shù)。(該方法必然已按升序擺列后調(diào)用)

。staticintbinarySearch(type[]a,intfromIndex,inttoIndex,typekey)使用二分搜尋法來搜尋key元素在數(shù)組中從fromIndex到toIndex的索引;若a數(shù)組不包含key,返回負(fù)數(shù)。(該方法必然已按升序擺列后調(diào)用)

。staticboolean[]copyOf(type[]original,intnewLength)staticbyte[]copyOfRange(type[]original,intfrom,intto)

復(fù)制指定的數(shù)組見下面?zhèn)渥?shù)組的指定范圍復(fù)制到一個新數(shù)組。staticbooleanequals(type[]a,type[]a2)假如兩個數(shù)組長度相等和元素一一相等,staticvoidfill(type[]a,typeval)將a數(shù)組全部元素都賦為val。staticvoidfill(type[]a,intfromIndex,inttoIndex,typeval)將a數(shù)組從formIndex引之間的元素都賦為val。staticvoidsort(type[]a)//sort(int[]arr)對指定的數(shù)組按數(shù)字升序進(jìn)行排序。staticvoidsort(type[]a,intfromIndex,inttoIndex)對指定數(shù)組的從formIndex到

則返回true到tiondex索tiondex索引之間的元素按數(shù)字升序進(jìn)行排序。staticStringtoString(type[]a)返回指定數(shù)組內(nèi)容的字符串表示形式。多個數(shù)組元素之間用英文逗號或空格分開。我的總結(jié):使用數(shù)組工具類能夠節(jié)儉時間,提高效率,注意常查閱api;Eg:packagereviewDemo;importjava.util.Arrays;//使用Arrays類publicclassDemo4{publicstaticvoidmain(String[]args){int[]age=newint[]{12,26,3,60,55,6,48,4,98};System.out.println(Arrays.toString(age));//

直接打印出數(shù)組的方法int[]age2={1,2,3,4,5,6,98,65,23};inti=Arrays.binarySearchSystem.out.println(i);

(age2,98);}}13、Java5新特色對數(shù)組的支持:加強for循環(huán)→for-eachfor(參數(shù)種類參數(shù)名:數(shù)組名){代碼塊}Eg:package

reviewDemo;publicclassDemo6{publicstaticvoidmain(String[]args){int[]age={1,2,3,69,36,636,459};for(inti:age){System.out.println(i);}}}這樣就用for-each把數(shù)組遍歷輸出!我的總結(jié):for-each用于數(shù)組和Iterable對象!在此后的會合學(xué)習(xí)中還會常常用到for-each循環(huán)。三、面向?qū)ο螅?)第三篇:1、什么叫面向?qū)ο??面向?qū)ο?Object-Oriented,簡稱OO)就是一種常有的程序結(jié)構(gòu)設(shè)計方法。面向?qū)ο笏枷氲幕A(chǔ)是將相關(guān)的數(shù)據(jù)和方法放在一起,組合成一種新的復(fù)合數(shù)據(jù)種類,使用新創(chuàng)立的復(fù)合數(shù)據(jù)種類作為項目的基礎(chǔ)。

此后面向?qū)ο笫且粋€很抽象的見解,它相對面向過程而言。過程與對象都是一種解決問題的思想。面向過程:重申的是功能行為,一種過程,先干啥,再干啥;面向?qū)ο螅簩⒐δ芊庋b到對象里,重申的是具備某功能的對象依據(jù)面向?qū)ο蟮乃枷?,能夠把任何的東西看做對象!

;面向?qū)ο蟮娜齻€特色:封裝(Encapsulation);繼承(Inheritance);多態(tài)(Polymorphism)。我的總結(jié):面向過程:重申的是詳盡的功能實現(xiàn);(履行者)面向?qū)ο螅褐厣甑氖蔷邆涔δ艿膶ο蟆#ü芾碚撸?、類類(class)是Java語言的最小編程單位,也是設(shè)計和實現(xiàn)Java程序的基礎(chǔ),本部分將深入介紹類的相關(guān)知識。類的見解類是一組事物共有特色和功能的描繪。類是對于一組事物的整體描繪,是依據(jù)面向?qū)ο蠹夹g(shù)進(jìn)行設(shè)計時最小的單位,也是構(gòu)成項目的最基本的模塊。類的見解是抽象的,近似于建筑設(shè)計中的圖紙,是對于現(xiàn)實需要代表的詳盡內(nèi)容的抽象。類只包含框架結(jié)構(gòu),而不包含詳盡的數(shù)據(jù)。所以類代表的是整體,而不代表某個特定的個體。我的總結(jié):類是抽象的,對象是詳盡的,實實在在的!類的定義:[修飾符]class

類名{1~n個結(jié)構(gòu)方法;0~n個字段;0~n個方法}定義類,其實就是定義類里面的對象對象包含:狀態(tài);(屬性)功能、行為;(方法)經(jīng)過類來描繪對象;狀態(tài)--------成員變量;功能、行為——方法;Eg:class

Person{//屬性privateprivateprivate

Stringintint

name;age;sal;方法publicvoidSystem.

show(){out.println(

"個人狀況:

"+name+age+sal

);}}3、結(jié)構(gòu)方法結(jié)構(gòu)方法:用來結(jié)構(gòu)類的實例(每一個類都默認(rèn)有一個無參的結(jié)構(gòu)方法,得使用字段:類或?qū)ο笏臄?shù)據(jù),對類狀態(tài)的一種描繪;方法:類或?qū)ο蟮奶厣蛐袨?/p>

new調(diào)用)作用:給類中的字段進(jìn)行初始化,能夠用來創(chuàng)立對象。特色:方法名與類名相同不用定義返回值種類不需要寫return語句我的總結(jié):注意:默認(rèn)結(jié)構(gòu)方法的特色。多個結(jié)構(gòu)方法是以重載的形式存在的。結(jié)構(gòu)方法的重載:(需要哪個就去適配哪個,調(diào)用哪個)this([實參]);調(diào)用目前類的結(jié)構(gòu)方法注意:this([實參]);必然放在結(jié)構(gòu)器的第一行

;對象的產(chǎn)生格式:類名稱對象名=new類名稱();因為有(),所以是方法,實質(zhì)上它就是結(jié)構(gòu)方法,并且是非私有的結(jié)構(gòu)方法。如:CellPhonecp=newCellPhone();Eg:classPerson{privateprivateprivate

Stringintint

name;age;sal;publicvoid

show(){System.

out.println(

"個人狀況:

"+name+age+sal

);}publicPerson(Stringname){super();=name;}publicPerson(Stringname,

int

age){super();=name;this.age=age;}publicPerson(Stringname,

int

age,

int

sal){super();=name;this.age=age;this.sal=sal;}}4、static要點字特色:跟著類的加載而加載優(yōu)先于對象存在被全部對象所共享能夠直接被類名調(diào)用使用注意:靜態(tài)方法只能接見靜態(tài)成員但是非靜態(tài)成員能夠接見靜態(tài)成員;靜態(tài)方法中不可以夠夠使用this,super要點字主方法(main)是靜態(tài)的(能夠利用類名去調(diào)用靜態(tài)的入死循環(huán),致使內(nèi)存溢出,jvm自動停止?。?/p>

main

方法,很正常!但是會陷publicstaticvoidmain(String[]agrs){}可修飾字段,方法。用static修飾的成員表示它屬于這個類共有,而不是屬于該類的單個實例。static修飾的字段==類字段static修飾的方法==類方法沒使用static修飾的字段和方法,成員屬于類的單個實例,不屬于類。沒有沒有

staticstatic

修飾的字段修飾的方法

==實例字段==實例方法類和實例接見字段和方法的語法:接見類成員:類.字段接見實例成員:實例.字段

類.方法實例.方法我的總結(jié):static修飾的字段和方法,既能夠經(jīng)過類調(diào)用,也能夠使用實例調(diào)用;沒static修飾的字段和方法,只能使用實例來調(diào)用(建議使用:類名來調(diào)用;其實在基層,對象調(diào)用類成員,也會變換類名調(diào)用)static要點字不可以夠與this,super同時連用!5、匿名對象一個沒出名字的對象,創(chuàng)立了一個對象出來特色:對方法或字段只進(jìn)行一次調(diào)用時;可作為實質(zhì)參數(shù)進(jìn)行傳達(dá);只在堆里面開拓積蓄地區(qū),只能使用一次,使用完就被銷毀了;何時使用?只拿來用一次!!newPerson();表示匿名對象,沒出名字的對象

,沒有賦給一個變量

;newPerson().age=17;//

使用一次此后就被銷毀了6、this要點字特色:this表示目前對象。目前對象←→目前正在調(diào)用實例成員的對象換言之:誰調(diào)用了方法,誰就是目前對象。什么時候使用this要點字呢?方法間的相互調(diào)用;this.字段;結(jié)構(gòu)器中相互調(diào)用,但是此時this([參數(shù)])必然寫在結(jié)構(gòu)方法第一行。this不可以夠用在static修飾的方法里和static修飾的代碼塊里;Eg:結(jié)構(gòu)方法中的=name;7、面向?qū)ο笾庋b封裝的兩個含義:1.把對象的狀態(tài)和行為看作一個一致的整體,將二者寄存在一個獨立的模塊中(類);2."信息隱蔽",把不需要讓外界知道的信息隱蔽起來,盡可能隱蔽對象功能實現(xiàn)細(xì)節(jié),字段;封裝系統(tǒng)在程序中的表現(xiàn)是:把描繪對象的狀態(tài)用字段表示,描繪對象的行為用方法表示,把字段和方法定義在一個類中,并保證外界不可以夠任意改正其內(nèi)部的字段值,也不同意任意調(diào)換其內(nèi)部的功能方法。程序中的一種表現(xiàn):往常將類中的成員變量私有化(private),經(jīng)過對外供應(yīng)方法setXxx,getXxx),可對該變量(xxx)進(jìn)行接見。boolean種類的變量沒有g(shù)etXX,只有isXX;Eg:classPerson1{privateStringname;privateintage;privateintsal;publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}8、接見修飾符private類接見權(quán)限:本類內(nèi)部能夠接見,不可以夠繼承到子類;default什么都不寫,包接見權(quán)限:本類內(nèi)部能夠接見,同包其余類也能夠接見,同包可繼承;protected子類接見權(quán)限:本類內(nèi)部能夠接見,不相同包的子類也能夠接見,同包其余類也能夠接見,能繼承到子類;public公共接見權(quán)限:任何地方都能夠接見,能繼承到子類;我的總結(jié):9、類的設(shè)計分析分析思路:依據(jù)要求寫出類所包含的字段;全部的字段都必然私有化;封裝此后的字段可經(jīng)過setter和getter設(shè)值和獲得;按需求可增添若干結(jié)構(gòu)方法;依據(jù)需求可增添相應(yīng)的方法;類中的全部方法都不要直接手理(輸出打印),而是交給調(diào)用者去辦理。10、面向?qū)ο笾^承第一有反應(yīng)一般事物特色的類,此后在此基礎(chǔ)上反應(yīng)出特別事物的類;也就是說:繼承是一種從一般到特其余關(guān)系;特色:1、提高了代碼的復(fù)用性。2、讓類與類之間產(chǎn)生關(guān)系,有了這個繼承關(guān)系才有了多態(tài)的特色。3、Java語言中只支持單繼承(有別于C語言)。因為多繼承簡單帶來安全隱患(父類多了,功能相同的話,就會出現(xiàn)調(diào)用不確立性嗎,覆寫一個方法,終歸覆寫的誰的?)。ps:接口能夠?qū)崿F(xiàn)多繼承4、Java支持多層繼承,object是每個類的超類,實現(xiàn)樹形結(jié)構(gòu)。我的總結(jié):繼承是多態(tài)的前提。對類而言,只支持單繼承。格式:[修飾符]classSubClassextendsSuperClass依據(jù)這種關(guān)系,我們把

SuperClass

類稱為父類或基類,把

SubClass稱為子類或派生類或拓展類;我的總結(jié):java.lang.Object是全部類的父類,Object要么是直接父類要么是間接父類。Eg:學(xué)生屬于人的一種特別狀況,此時我把人的共性寫在Person類里面,為了讓學(xué)生擁有這些共性(其余比方老師也能夠有這些共性),此后我就讓學(xué)生來拓展Person類。我的總結(jié):子類與父類的關(guān)系:子類拓展父類(子類是父類的一種特別狀況)主假如以父類為基礎(chǔ),此后增添屬于自己的字段和方法。父類的私有成員子類不可以夠繼承到;父類的結(jié)構(gòu)方法不可以夠被繼承;Java只支持單繼承,不支持多繼承;//不然的話,比方show方法,繼承了多個,不知道終歸調(diào)用那一個。一個類有且只有一個直接父類;一個類沒顯示的繼承其余的一個類的時候,默認(rèn)的直接父類就是Object類;Student的直接父類是Person,Object類也是Student類的父類,但是是間接父類;一旦一個類顯示的繼承了其余的一個類的時候,此時默認(rèn)的直接父類Object就會被撤消;Java里一個類只能有一個直接父類;java.lang.Object是全部類的父類,Object要么是直接父類要么是間接父類。子類對象實例化過程在繼承操作中,對于子類對象的實例化:子類對象在實例化從前必然第一調(diào)用父類中的結(jié)構(gòu)方法此后再調(diào)用自己的結(jié)構(gòu)方法。11、子類接見父類和方法覆寫子類不可以夠直接接見父類的私有成員;但是子類能夠調(diào)用父類中的非私有方法來間接接見父類的私有成員。Person類中有私有字段name,Student繼承PersonnewSudent().name;×newStudent().getName();√子類拓展父類(子類是父類的一種特別狀況)主假如以父類為基礎(chǔ),此后增添屬于自己的字段和方法。方法覆寫產(chǎn)生原由:當(dāng)父類中某個方法不適合于子類時,子類出現(xiàn)父類如出一轍的方法.判斷必殺技:子類方法前加上@Override能編譯經(jīng)過,表示是方法的覆寫。調(diào)用被覆蓋的父類方法:使用super.方法名(實參);方法覆寫時應(yīng)依據(jù)的原則(一起兩小一大):(一起):方法署名必然相同;(兩小):子類方法的返回值種類比父類方法的返回值種類更小或相等子類方法申明拋出的異樣應(yīng)比父類方法申明拋出的異樣更小或相等;(一大):子類方法的接見權(quán)限應(yīng)比父類方法更大或相等;子類需要覆寫父類方法。當(dāng)父類的某個方法不適合于子類自己的特色行為時就當(dāng)覆寫父類中應(yīng)當(dāng)改變的方法。12、super要點字和調(diào)用父類結(jié)構(gòu)方法表示父類對象的默認(rèn)引用假如子類要調(diào)用父類被覆蓋的實例方法,可用super作為調(diào)用者調(diào)用父類被覆蓋的實例方法。使用super調(diào)用父類方法使用super調(diào)用父類的結(jié)構(gòu)方法調(diào)用結(jié)構(gòu)方法本類中調(diào)用另一個重載結(jié)構(gòu)方法用this(參數(shù)列表)子類結(jié)構(gòu)方法調(diào)用父類結(jié)構(gòu)方法用super(參數(shù)列表)子類調(diào)用父類的結(jié)構(gòu)方法時:super必然放在第一句Java在履行子類的結(jié)構(gòu)方法前會先調(diào)用父類無參的結(jié)構(gòu)方法,其目的是為了對繼承自父類的成員做初始化操作。子類在創(chuàng)立對象的時候,默認(rèn)調(diào)用父類的無參結(jié)構(gòu)方法,假如子類結(jié)構(gòu)方法中顯示指定調(diào)用父類其余結(jié)構(gòu)方法,就調(diào)用指定的父類結(jié)構(gòu)方法,撤消調(diào)用父類無參結(jié)構(gòu)方法。Eg:packagereviewDemo;classA{StringA(){

name;System.

out

.println(

"父類默認(rèn)隱式的結(jié)構(gòu)方法!

");}A(Stringname){System.out

.println(

"父類顯式的結(jié)構(gòu)方法!

");}}classBextendsA{B(){super(null);System.out.println("子類默認(rèn)隱式的結(jié)構(gòu)方法!");}}publicclassDemo10{publicstaticvoid

main(String[]args){newB();}}13、面向?qū)ο笾鄳B(tài)多態(tài):指同一個實體同時擁有多種形式好似,你去面館吃面,說我要吃面,那么;老板給我牛肉面,雞蛋面等都能夠,這就是說"面"有多種形態(tài),也就是說實體有多種形態(tài);編譯時的種類由申明該變量時使用的種類決定,運轉(zhuǎn)時的種類由實質(zhì)賦給變量的對象決定。假如編譯時種類和運轉(zhuǎn)時種類不相同,就出現(xiàn)多態(tài)。Eg:前提:StudentextendsPerson:Personp=newPerson();Students=newStudent();Personp=newStudent();//多態(tài)引用關(guān)系:父類變量指向子類實例對象實現(xiàn)多態(tài)的系統(tǒng):父類的引用變量能夠指向子類的實例對象,而程序調(diào)用的方法在運轉(zhuǎn)期才動向綁定,就是引用變量所指向的真的確例對象的方法,也就是內(nèi)存里正在運轉(zhuǎn)的那個對象的方法,而不是引用變量的種類中定義的方法。多態(tài)的作用:把不相同的子類對象都看作父類來看,能夠障蔽不相同子類對象之間的差別,寫出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。只改正方法的實現(xiàn),不用改正方法的申明繼承是多態(tài)產(chǎn)生的前提條件;分類:編譯時多態(tài):方法重載運轉(zhuǎn)時多態(tài):方法覆寫Eg:packagetest;classDog{voideat(){System.out.println("一般的狗吃一般的狗糧!");}}classHashDogextendsDog{voideat(){System.out.println("哈士奇吃哈士奇的狗糧!");}}classZangAoDogextendsDog{voideat(){System.out.println("藏獒吃藏獒的狗糧!");}}定義一個動物園喂的方法classZoo{voidfeed(Dogd){d.eat();}}publicclassDemo11{publicstaticvoidmain(String[]args){Doghd=newHashDog();Dogzd=newZangAoDog();Zooz=newZoo();z.feed(hd);z.feed(zd);}}輸出:哈士奇吃哈士奇的狗糧!藏獒吃藏獒的狗糧!14、引用變量種類變換向上轉(zhuǎn)型(子類→父類):(自動完成)父類名稱父類對象=子類實例;向下轉(zhuǎn)型(父類→子類):(強迫完成)子類名稱子類對象=(子類名稱)父類實例;對象名instanceof類判斷指定的變量名此時引用的真切種類是不是目

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論