freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java初級知識點(diǎn)大總結(jié)(編輯修改稿)

2024-12-23 16:14 本頁面
 

【文章內(nèi)容簡介】 。編譯器在處理 private方法時(shí),是按照 final方法來對待的,這樣可以提高該方法被調(diào)用時(shí)的效率。不過子類仍然可以定義同父類中的 private方法具有同樣結(jié)構(gòu)的方法,但是這并不會(huì)產(chǎn)生重寫的效果,而且它們之間也不存在必然聯(lián)系。 3)定義類。 由于 final類不允許被繼承,編譯器在處理時(shí)把它的所有方法都當(dāng)作 final的,因此final類比普通類擁有更高的效率。 final的類的所有方法都不能被重寫,但這并不表示 final的類的屬性(變量)值也是不可改變的,要想做到 final類的屬性值不可改變,必須給它增加 final修飾。 第七章 類的高級特性 Static關(guān)鍵字 在 Java語言中, static表示“全局”或者“靜態(tài)”的意思,用來修飾成員變量和成員方法,也可以形成靜態(tài) static代碼塊,但是 Java語言中沒有全局變量的概念。 被 static修飾的成員變量和成員方法獨(dú)立于該類的任何對象。也就是說,它不依賴類特定的實(shí)例,被類的所有實(shí)例共享。只要這個(gè)類被加載, Java虛擬機(jī)就能根據(jù)類名在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)定找到他們。因 此, static對象可以在它的任何對象創(chuàng)建之前訪問,無需引用任何對象。 用 public修飾的 static成員變量和成員方法本質(zhì)是全局變量和全局方法,當(dāng)聲明它類的對象時(shí),不生成 static變量的副本,而是類的所有實(shí)例共享同一個(gè) static變量。 static變量前可以有 private修飾,表示這個(gè)變量可以在類的靜態(tài)代碼塊中,或者類的其他靜態(tài)成員方法中使用(當(dāng)然也可以在非靜態(tài)成員方法中使用),但是不能在其他類中通過類名來直接引用,這一點(diǎn)很重要。實(shí)際上你需要搞明白, private是訪問權(quán)限限定, static表示不 要實(shí)例化就可以使用,這樣就容易理解多了。 static前面加上其它訪問權(quán)限關(guān)鍵字的效果也以此類推。 static修飾的成員變量和成員方法習(xí)慣上稱為靜態(tài)變量和靜態(tài)方法,可以直接通過類名來訪問,訪問語法為: 類名 .靜態(tài)方法名 (參數(shù)列表 ...) 類名 .靜態(tài)變量名 用 static修飾的代碼塊表示靜態(tài)代碼塊,當(dāng) Java虛擬機(jī)( JVM)加載類時(shí),就會(huì)執(zhí)行該代碼塊(用處非常大)。 static在 Java語言中的使用有四種: (變量、方法、代碼塊、內(nèi)部類 ) 一、 static變量 按照是否靜態(tài)的對類成員變量進(jìn)行分類可分兩種:一種 是被 static修飾的變量,叫靜態(tài)變量或類 變量;另一種是沒有被 static修飾的變量,叫實(shí)例變量。 兩者的區(qū)別是: 對于靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝(節(jié)省內(nèi)存), JVM只為靜態(tài)分配一次內(nèi)存,在加載類的過 程中完成靜態(tài)變量的內(nèi)存分配,可用類名直接訪問(方便),當(dāng)然也可以通過對象來訪問(但是這是不推薦的)。 對于實(shí)例變量, 每 創(chuàng)建一個(gè)實(shí)例,就會(huì)為實(shí)例變量分配一次內(nèi)存,實(shí)例變量可以在內(nèi)存中有多個(gè)拷貝,互不影響(靈活)。 二、靜態(tài)方法 靜態(tài)方法可以直接通過類名調(diào)用,任何的實(shí)例也都可以調(diào)用,因此靜態(tài)方法中不能用this和 super關(guān)鍵字,不能直接訪問所屬類的實(shí)例變量和實(shí)例方法 (就是不帶 static的成員變量和成員成員方法 ),只能訪問所屬類的靜態(tài)成員變量和成員方法。因?yàn)閷?shí)例成員與特定的對象關(guān)聯(lián)!這個(gè)需要去理解,想明白其中的道理,不是記憶!??! 因?yàn)?static方法獨(dú)立于任何實(shí)例,因此 static方法必須被實(shí)現(xiàn),而不能是抽象的abstract。 static代碼塊 static代碼塊也叫靜態(tài)代碼塊,是在類中獨(dú)立于類成員的 static語句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi), JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的 代碼塊,如果 static代碼塊有多個(gè), JVM將按照它們在類中出現(xiàn)的先后順序依次執(zhí)行它們,每個(gè)代碼塊只會(huì)被執(zhí)行一次。 利用靜態(tài)代碼塊可以對一些 static變量進(jìn)行賦值,最后再看一眼這些例子,都一個(gè)static的 main方法,這樣 JVM在運(yùn)行 main方法的時(shí)候可以直接調(diào)用而不用創(chuàng)建實(shí)例。 4. 靜態(tài)內(nèi)部類( Inner Class) 為正確理解 static在應(yīng)用于內(nèi)部類時(shí)的含義,必須記住內(nèi)部類的對象默認(rèn)持有創(chuàng)建它的那個(gè)封裝類的一個(gè)對象的句柄。然而,假如我們說一個(gè)內(nèi)部類是 static的,這種說法卻是不成立的。 static內(nèi)部類意味著: (1) 為創(chuàng)建一個(gè) static內(nèi)部類的對象,我們不需要一個(gè)外部類對象。 (2) 不能從 static內(nèi)部類的一個(gè)對象中訪問一個(gè)外部類對象。 說明: 1)但在存在一些限制:由于 static成員只能位于一個(gè)類的外部級別,所以內(nèi)部類不可擁有 static數(shù)據(jù)或 static內(nèi)部類。 2)倘若為了創(chuàng)建內(nèi)部類的對象而不需要?jiǎng)?chuàng)建外部類的一個(gè)對象,那么可將所有東西都設(shè)為 static。為了能正常工作,同時(shí)也必須將內(nèi)部類設(shè)為 static。如下所示: 在 main()中,我們不需要 Parcel10的對象;相反, 我們用常規(guī)的語法來選擇一個(gè) static成員,以便調(diào)用將句柄返回 Contents和 Destination的方法。 3)通常,我們不在一個(gè)接口里設(shè)置任何代碼,但 static內(nèi)部類可以成為接口的一部分。由于類是“靜態(tài)”的,所以它不會(huì)違反接口的規(guī)則 —— static內(nèi)部類只位于接口的命名空間內(nèi)部:這樣便生成一個(gè)獨(dú)立的、名為 TestBed$Tester的類(為運(yùn)行程序,請使用“ java TestBed$Tester”命令)??蓪⑦@個(gè)類用于測試,但不需在自己的最終發(fā)行版本中包含它。 高級訪問修飾符 private:私 用 只能在被類中被訪問 default:默認(rèn) 只能被同一個(gè)包中的類訪問 protected:受保護(hù)的 只能被同一個(gè)包中的類和不同包中的子類訪問 public:公有 可以被任何類訪問 封裝類 1) .基本類型只能按值傳遞,而每個(gè)基本類型對應(yīng)的封裝類是按引用傳遞的 ,是通過private實(shí)現(xiàn)的 。 2) 從性能上說 java中的基本類型是在堆棧上創(chuàng)建的,而所有的對象類型都是在堆上創(chuàng)建的,(對象的引用在堆棧上創(chuàng)建)。比如 Integer i=new Integer(10)。 其中 new Integer()是在堆上創(chuàng) 建的,而他的引用Integer i是在堆棧上。 封裝類的出現(xiàn),是為了更方便的使用一些基本類型不具備的方法,比如 valueOf(), toString()等等。還有你如果想傳遞一個(gè) int對象的引用,而不是值,那只能用封裝類。 在堆棧上分配內(nèi)存的調(diào)用效率和在堆上分配內(nèi)存的效率差太多了。雖然在堆棧上分配內(nèi)存效率高,不過在堆棧上分配內(nèi)存有內(nèi)存泄露的問題。(這是一個(gè)平庸程序員基本解決不了的問題 ...) java用了一種很天才的方法提高了在堆上分配內(nèi)存的效率,盡管如此, java還是慢。他不太可能達(dá)到向 c++那么快,盡管他一直 在承諾總有一天虛擬機(jī)會(huì)和機(jī)器碼速度一樣快。 內(nèi)部類 內(nèi)部類是嵌套定義于另一個(gè)類內(nèi)部的類。 (1)內(nèi)部類可以由 abstract, private或者 protected定義。 (2)內(nèi)部類的類名不可以和它所在的類名相同。 (3)在類中,只有內(nèi)部類可以被聲明為 static成員。 第八章 抽象類和接口 包 包( package)是類和接口的集合,利用包可以把常用的類或功能相似的類放在一個(gè)包中。 Java 還提供了系統(tǒng)包。 包是 Java 提供 的一種區(qū)別類名空間的機(jī)制,是類的邏輯組織形式,一個(gè)包對應(yīng)一個(gè)文件夾, 包中還可以有包,稱為包等級。 當(dāng)源程序中沒有聲明類所在的包時(shí), Java 將類放在默認(rèn)包中,即運(yùn)行編譯器的當(dāng)前文件夾中。這時(shí)不能出現(xiàn)重復(fù)的類名。 一、 Java 的系統(tǒng)包 Java 提供了大量的類,為便于管理和使用,分為不同的包。這些包又稱類庫或 API 包,所謂 API( application program interface)即應(yīng)用程序接口。 API 包一方面提供豐富的類與方法供大家使用,如畫圖形、播放聲音等,另一方面又負(fù)責(zé)和系統(tǒng)軟硬件打交道 ,把用戶程序的功能圓滿實(shí)現(xiàn)。許多 Java API 包都以“ java.”開頭,以區(qū)別用戶創(chuàng)建的包。 二、包的引用 1)導(dǎo)入包語句 格式: import 包名 1[.包名 2?? ] .類名 |* ; 說明:如果有多個(gè)包或類,用“ .”分割,“ *”表示包中所有的類。 例: import // 導(dǎo)入 包中的 Applet 類 import .* // 導(dǎo)入 包中的所有類 包是系統(tǒng)自動(dòng)隱含導(dǎo)入 2)包的路徑 由于 Java 使用文件系統(tǒng)來存儲(chǔ)包和類,類名就是文件名,包名就是文件夾名,設(shè)置環(huán)境變量用 classpath 方法。 三、 聲明自定義包 1)創(chuàng)建自定義包 格式: package 包名 說明:( 1)聲明包語句必須添加在源程序的第一行,表示該文件的全部類都屬于這個(gè)包 ( 2)可以在不同的文件中使用相同的聲明語句,可將不同文件中的類都包含在相同的包中。 ( 3)若在程序中沒有聲明包,類就放在默認(rèn)的包中,這個(gè)包沒有名字,默認(rèn)包適用于小的程序。 2)設(shè)置包的路徑 用自定義包名建立一個(gè)文件夾,如: c:\ Mypackage 設(shè)置路徑: set classpath=. 。 c:\ 。 c:\mypackage 以后其它類使用自定義包里的類用命令: import Mypackage.* 3)創(chuàng)建包等級 格式: package 包名 1[.包名 2][.包名 3][.?? ] 抽象類 抽象類實(shí)際上,抽象類就是比普通類多了一個(gè)抽象方法而已。 ( 1) 抽象類是包含抽象方法的類稱為抽象類,抽象方法是只聲明而未實(shí)現(xiàn)的方法,抽象類可必須有抽象方法,可包含具體方法。 ( 2)所有的抽象方法和抽象類都必須使用 abstract關(guān)鍵字進(jìn)行聲明。 ( 3)抽象類不能直接進(jìn)行實(shí)例化操作,但可以聲明,其目的在于擴(kuò)展,不能用構(gòu)造方法對數(shù)據(jù)成員進(jìn)行初始化。 ( 4)抽象類繼承的時(shí)候可以不必實(shí)現(xiàn)父類的所有抽象方法,但第一個(gè)具體子類必須實(shí)現(xiàn)抽象類的全部方法。 抽象方法只有方法定義,沒有方法體。如果一個(gè)類包含任何抽象方法,包括直接的和繼承所得,則這個(gè)類必須是抽象的。如果一個(gè)類是抽象的,則不能創(chuàng)建此類的對象,抽象類強(qiáng)制要求他的所有子類重寫自己的方法以覆蓋抽象方法。 如果某個(gè)字累沒有覆蓋抽象方法,則這個(gè)字類也要成為抽象 類,即必須被聲明成abstract類。 ( 5)抽象類不能含 final關(guān)鍵字。 ( 6)抽象類中允許有構(gòu)造方法,但構(gòu)造方法是不能直接調(diào)用的,是交給子類調(diào)用的,子類對象的實(shí)例化,永遠(yuǎn)先調(diào)用父類的構(gòu)造函數(shù),抽象類中的屬性要初始化,則肯定還是依賴構(gòu)造方法的。 ( 7)抽象類的方法必須由具體子類實(shí)現(xiàn),所以抽象方法不能是 private類型,另外 abstact和 sychronied不能混用。 接口 接口( interface)解決了 Java 不支持多重繼承的問題,可以通過實(shí)現(xiàn)多個(gè)接口達(dá)到與多重繼承相同的功能。 Java 語 言不支持多重繼承,為了實(shí)現(xiàn)多重繼承的功能, Java 提供接口來實(shí)現(xiàn),且比多重繼承具有更強(qiáng)的功能。多重繼承指一個(gè)類可以是多個(gè)類的子類接口可以看作是沒有實(shí)現(xiàn)的方法和常量的集合。接口與抽象類相似,接口中的方法只是做了聲明,而沒有定義任何具體的操作方法。 接口功能: ( 1)通過接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,而不需要考慮這些類之間的層次關(guān)系 ( 2)通過接口可以指明多個(gè)類需要實(shí)現(xiàn)的方法 ( 3)通過接口可以了解對象的交互界面,而不需了解對象所對應(yīng)的類。 一、接口的特點(diǎn) 1)接口中定義的方法沒有方法體,它們以參數(shù)列表后面 的分號作為結(jié)束,他本質(zhì)上是抽象方法; 2)在接口中指定的方法沒有默認(rèn)的實(shí)現(xiàn),每個(gè)包含接口的類必須實(shí)現(xiàn)所有的方法; 3)即口中可以聲明變量,它們一般是 final和 static類型的,它們必須以常量值初始化; 4)如果借口本身定義成 public,所有方法和變量都是 public的。 二、實(shí)現(xiàn)系統(tǒng)提供的接口 接口中定義的變量全部隱含為了 final 和 static,表明這些變量不能被實(shí)現(xiàn)接口方法的類改變 ,這些變量還必須設(shè)置初值。如果接口為 public,則接口中的方法和變量也全部為 public,否則只能被處于同一包中的 成員訪問。類引用接口不叫繼承而稱為實(shí)現(xiàn)。 說明: 在實(shí)現(xiàn)接口時(shí),要實(shí)現(xiàn)所有接口中定義的所有方法,方法的實(shí)現(xiàn)要以具有具體的實(shí)現(xiàn)內(nèi)容,也可以是空的方法,即只有方法名或參數(shù),沒有變量、沒有具體操作語句。 三、 創(chuàng)建自定義接口 格式: [修飾符 ] interface 接口名 { 靜態(tài)常量及方法聲明 } 說明:( 1) Java 系統(tǒng)會(huì)自動(dòng)把接口中聲明的變量當(dāng)作 static final 類型,不管是否使用了這些修飾符,且必須賦初值,這些變量值都不能被修改。 ( 2)接口中的方法默認(rèn)為 abstract,不管有沒有這些修飾 符。 ( 3)接口若是 public,那么該接口可被任意類實(shí)現(xiàn),否則只有與接口在同一個(gè)包中
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1