電工與電子技術(shù)電子商務(wù)電子課件JAVA語(yǔ)言程序設(shè)計(jì)java08ppt_第1頁(yè)
電工與電子技術(shù)電子商務(wù)電子課件JAVA語(yǔ)言程序設(shè)計(jì)java08ppt_第2頁(yè)
電工與電子技術(shù)電子商務(wù)電子課件JAVA語(yǔ)言程序設(shè)計(jì)java08ppt_第3頁(yè)
電工與電子技術(shù)電子商務(wù)電子課件JAVA語(yǔ)言程序設(shè)計(jì)java08ppt_第4頁(yè)
電工與電子技術(shù)電子商務(wù)電子課件JAVA語(yǔ)言程序設(shè)計(jì)java08ppt_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子課件JAVA語(yǔ)言程序設(shè)計(jì)java08第8章數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理8.1基本數(shù)據(jù)結(jié)構(gòu)的構(gòu)造8.2泛型8.3枚舉8.4容器集合類(lèi)8.5注解本章目錄8.1基本數(shù)據(jù)結(jié)構(gòu)的構(gòu)造一、自引用類(lèi)在定義類(lèi)時(shí),可以把另一個(gè)類(lèi)的對(duì)象實(shí)例作為該類(lèi)的成員定義在該類(lèi)中。如果作為類(lèi)成員的對(duì)象實(shí)例就是所定義的類(lèi)的類(lèi)型,這個(gè)類(lèi)就稱(chēng)為自引用類(lèi),這種方式在Java語(yǔ)言中是被允許的?!翱梢员蛔约阂玫念?lèi)”。一種遞歸調(diào)用。class Node private int data; private Node nextNode; public Node(int d) data = d; public int getData() return

2、 data; public void setData(int dd) data = dd; public Node getNextNode() return nextNode; public void setNextNode(Node next) nextNode = next; 二、構(gòu)造鏈表鏈表是一種典型的線(xiàn)性結(jié)構(gòu),包括單向鏈表和雙向鏈表。利用自引用類(lèi),構(gòu)造鏈表節(jié)點(diǎn)類(lèi),從而構(gòu)造出單向鏈表?!纠?.1】單向鏈表的例子稍作改進(jìn),即可構(gòu)造出雙向鏈表。三、構(gòu)造棧棧也是一種線(xiàn)性結(jié)構(gòu),特點(diǎn)是只允許在棧尾添加和刪除節(jié)點(diǎn),即后進(jìn)先出結(jié)構(gòu)。先進(jìn)入棧的是頭元素,后進(jìn)入棧的是尾元素。利用自引用類(lèi),構(gòu)造棧節(jié)點(diǎn)類(lèi),從

3、而構(gòu)造出棧?!纠?.2】線(xiàn)性棧的例子四、構(gòu)造隊(duì)列隊(duì)列也是一種線(xiàn)性結(jié)構(gòu),隊(duì)列是先進(jìn)先出結(jié)構(gòu),即先進(jìn)入隊(duì)列的元素必定先從隊(duì)列中離開(kāi)。參照鏈表和棧,很容易構(gòu)造出隊(duì)列。五、構(gòu)造二叉樹(shù)樹(shù)形結(jié)構(gòu)是一種重要的非線(xiàn)性結(jié)構(gòu),其中,樹(shù)和二叉樹(shù)結(jié)構(gòu)較為常用。樹(shù)形結(jié)構(gòu)包含根節(jié)點(diǎn)、分支節(jié)點(diǎn)和葉節(jié)點(diǎn)。對(duì)于每個(gè)節(jié)點(diǎn)而言,除了需要有保存數(shù)據(jù)的變量,還必須有指向下一層節(jié)點(diǎn)的指針。可以定義帶有兩個(gè)子節(jié)點(diǎn)指針的節(jié)點(diǎn)類(lèi),從而構(gòu)造出二叉樹(shù)。【例8.3】二叉樹(shù)抽象類(lèi)的例子8.2泛型一、泛型的概念泛型(Generics)是Java語(yǔ)言中在面向?qū)ο缶幊碳案鞣N設(shè)計(jì)模式中應(yīng)用非常廣泛的一個(gè)概念,自Java SE 5版本開(kāi)始引入。使用泛型,一方面

4、是為了編寫(xiě)更為通用的程序代碼,讓定義的代碼具有更為廣泛的表達(dá)能力;另一方面是為了加強(qiáng)程序的數(shù)據(jù)安全性。泛型是把類(lèi)型作為變量的一種定義方式,實(shí)現(xiàn)了參數(shù)化類(lèi)型的概念。程序清單8.1中,把作為鏈表節(jié)點(diǎn)存儲(chǔ)值的變量data定義為Object類(lèi)型,其用意是表示這個(gè)定義具有一定程度的適應(yīng)性,可以用于多種引用類(lèi)型,但是實(shí)際效果可能難以盡如人意。當(dāng)存儲(chǔ)數(shù)據(jù)時(shí),若同時(shí)存儲(chǔ)不同類(lèi)型的數(shù)據(jù),類(lèi)型驗(yàn)證總是正確的。這樣會(huì)導(dǎo)致一些后續(xù)問(wèn)題。在引入泛型概念之后,這樣的問(wèn)題就好處理了??梢园焉厦娴臄?shù)據(jù)類(lèi)型定義為一個(gè)變量,當(dāng)實(shí)際使用這段代碼時(shí),指定具體的數(shù)據(jù)類(lèi)型,使得代碼在運(yùn)行時(shí)按照給出的具體數(shù)據(jù)類(lèi)型進(jìn)行類(lèi)型驗(yàn)證,這就是泛型,

5、就是“關(guān)于類(lèi)型的變量”。使用泛型方法,使得程序具有抽象性和概括性,可以讓程序員避免重復(fù)編寫(xiě)平行的程序段。class UnidirectionalListNode T data; UnidirectionalListNode nextNode; /定義兩個(gè)構(gòu)造方法 UnidirectionalListNode(T object) this(object,null); UnidirectionalListNode(T object,UnidirectionalListNode node) data = object; nextNode = node; T getDate() return data

6、; UnidirectionalListNode getNextNode() return nextNode; 使用一個(gè)帶有尖括號(hào)的符號(hào)放在類(lèi)名后面,把類(lèi)中原來(lái)的Object使用T替換,即完成了一個(gè)泛型類(lèi)的定義。當(dāng)實(shí)際使用時(shí),給出一個(gè)具體的引用類(lèi)型,替代尖括號(hào)中的T,即可進(jìn)行編譯和運(yùn)行。這里相當(dāng)于定義了一個(gè)變量,即一個(gè)關(guān)于類(lèi)型的變量,T就是這個(gè)變量的標(biāo)識(shí)符。泛型變量的書(shū)寫(xiě)沒(méi)有明確的要求,習(xí)慣上使用單個(gè)的大寫(xiě)字母。JFC類(lèi)庫(kù)中經(jīng)常使用以下的字母作為泛型定義的類(lèi)型變量。T:類(lèi)型Type的首字母,使用頻率比較高,通常用于一般的類(lèi)型定義。E:元素Element的首字母,多用于Java集合框架。K:關(guān)鍵

7、字Key的首字母,用于鍵/值對(duì)的關(guān)鍵字。V:值Value的首字母,用于鍵/值對(duì)的對(duì)應(yīng)值。N:數(shù)字Number的首字母,用于指代泛型中的數(shù)字類(lèi)型。當(dāng)實(shí)際使用這樣的代碼時(shí),需要使用一個(gè)具體的類(lèi)型替代類(lèi)型變量,這個(gè)類(lèi)型要求必須是引用類(lèi)型,不能是基本數(shù)據(jù)類(lèi)型,但可以是基本數(shù)據(jù)類(lèi)型的封裝類(lèi)??梢愿鶕?jù)需要在一個(gè)代碼段中使用兩個(gè)或兩個(gè)以上的泛型變量。泛型的核心概念是通過(guò)代碼告訴編譯器想要使用什么類(lèi)型,而使用類(lèi)型的細(xì)節(jié)就需要編譯器幫助處理了。泛型定義僅在編譯階段有效,不會(huì)進(jìn)入運(yùn)行階段,進(jìn)入運(yùn)行階段的是使用實(shí)際引用類(lèi)型替代類(lèi)型變量后的代碼。二、泛型類(lèi)將泛型定義方式應(yīng)用于類(lèi)定義,得到的類(lèi)就是泛型類(lèi)。在實(shí)際使用時(shí),

8、必須使用一個(gè)具體的類(lèi)型替代泛型類(lèi)定義中的類(lèi)型變量。然后繼續(xù)向下使用,可以獲得一個(gè)存儲(chǔ)字符串型引用的單向鏈表。三、泛型接口將泛型定義方式應(yīng)用于接口定義,得到的接口就是泛型接口,其具體使用與泛型類(lèi)類(lèi)似,也是將泛型參數(shù)放到接口名的后面。泛型接口在實(shí)現(xiàn)時(shí)有兩種方式,可以在實(shí)現(xiàn)類(lèi)中依然保留泛型變量,成為泛型類(lèi)的定義;也可以在實(shí)現(xiàn)類(lèi)中給出一個(gè)具體的類(lèi)型替代泛型變量,成為實(shí)用類(lèi)的定義。四、泛型方法將泛型定義方式應(yīng)用于方法定義,得到的方法就是泛型方法。在定義泛型方法時(shí),需要把泛型參數(shù)放到方法的返回值類(lèi)型說(shuō)明之前。在方法體中應(yīng)該出現(xiàn)引用類(lèi)型的地方,一律使用泛型參數(shù),以備編譯系統(tǒng)在運(yùn)行代碼時(shí)使用實(shí)際引用類(lèi)型替代。

9、這里有一個(gè)設(shè)計(jì)原則:如果只使用泛型方法就可以將整個(gè)類(lèi)泛型化,就應(yīng)該只使用泛型方法,不使用泛型類(lèi),因?yàn)檫@樣可以表述得更清楚。五、泛型通配符泛型通配符一般使用“?”代替具體的類(lèi)型實(shí)參出現(xiàn)在程序代碼中,代表可以是任意的類(lèi)型。注意,泛型通配符“?”與泛型定義使用的類(lèi)型變量不同,類(lèi)型變量是一個(gè)形參,而泛型通配符“?”代表的是實(shí)參。泛型通配符解決了泛型類(lèi)不適用向上轉(zhuǎn)型原則的問(wèn)題。六、泛型的上下邊界稱(chēng)為上界通配符(Upper Bounds Wildcards),是指所有由T派生的子類(lèi),這時(shí)的“?”泛指在類(lèi)的繼承樹(shù)上位置低于T的所有類(lèi),所以稱(chēng)為上界通配符。稱(chēng)為下界通配符(Lower Bounds Wildca

10、rds),是指所有派生了T的父類(lèi),這時(shí)的“?”泛指在類(lèi)的繼承樹(shù)上位置高于T的所有類(lèi),所以稱(chēng)為下界通配符。8.3枚舉一、枚舉的定義Java SE 5版本增加定義了枚舉,添加了枚舉關(guān)鍵字enum,用來(lái)定義枚舉數(shù)據(jù)類(lèi)型。public enum Special MATHEMATICS,PHYSICS,CHEMISTRY,ELECTRONICS,COMPUTER;這就定義了一個(gè)“Special”的枚舉類(lèi)型。這相當(dāng)于聲明了一個(gè)“Special”類(lèi),此類(lèi)繼承自Enum類(lèi),所有的元素都是類(lèi)的字段,具有常量值,所以一般使用大寫(xiě)字母的字符串描述元素。在使用枚舉類(lèi)型時(shí),需要生成類(lèi)的對(duì)象實(shí)例引用,并將枚舉的一個(gè)元素賦

11、值給對(duì)象實(shí)例引用。在創(chuàng)建枚舉類(lèi)型時(shí),編譯器會(huì)自動(dòng)添加一些特性給枚舉類(lèi)型,如添加toString()方法用來(lái)顯示枚舉實(shí)例的名稱(chēng),添加ordinal()方法用來(lái)獲取枚舉常量元素的聲明順序,這兩個(gè)方法來(lái)自Enum類(lèi);還會(huì)添加static values()方法用來(lái)獲取聲明順序?qū)?yīng)的元素,這個(gè)方法是編譯器添加的。二、Enum類(lèi)Java SE 5版本增加定義了枚舉類(lèi),即Enum類(lèi),其元素使用泛型描述。該類(lèi)實(shí)現(xiàn)了Serializable和Comparable兩個(gè)接口,具有可序列化和可比較的屬性,其中的幾個(gè)方法是比較常用的:compareTo(E o) /比較此枚舉與指定對(duì)象的順序equals(Object

12、other) /當(dāng)指定對(duì)象等于此枚舉常量時(shí),返回truehashCode() /返回枚舉常量的哈希碼ordinal() /返回枚舉常量的序數(shù)toString() /返回枚舉常量的名稱(chēng)valueOf(Class enumType, String name) /返回指定枚舉類(lèi)型的枚舉常量三、枚舉的使用枚舉實(shí)例可以像普通的常量一樣被使用。此外,枚舉有一個(gè)特別的用途,它可以在switch語(yǔ)句內(nèi)部使用,以枚舉實(shí)例引用作為switch語(yǔ)句的控制表達(dá)式?!纠?.6】枚舉和switch 語(yǔ)句使用8.4容器集合類(lèi)從Java SE 5版本開(kāi)始,對(duì)數(shù)據(jù)處理的內(nèi)容進(jìn)行了整理和加強(qiáng),JFC類(lèi)庫(kù)中增加定義了一些專(zhuān)門(mén)用于處

13、理數(shù)據(jù)的API。一、For-each遍歷與迭代器例8.6使用了For-each遍歷,這是Java SE 5版本提供的一個(gè)新的遍歷工具。Foreach遍歷與for循環(huán)語(yǔ)句有些類(lèi)似,其基本語(yǔ)法格式如下:for(ObjectInstanceName:Collection_or_Array) statements二、迭代器Java語(yǔ)言中的迭代器是通過(guò)Iterable接口和Iterator接口的定義實(shí)現(xiàn)的。Iterable接口的定義原型為java.lang.Iterable,其中只聲明了1個(gè)方法成員:Iterator iterator() /返回一個(gè)在一組T 類(lèi)型的元素上 /進(jìn)行迭代的迭代器Iterat

14、or接口的定義原型為java.util.Iterator,這里的代表其元素類(lèi)型泛型,其中聲明了3個(gè)方法成員:boolean hasNext() /如果仍有元素可以迭代,則返回trueE next() /返回迭代的下一個(gè)元素void remove() /從迭代器指向的集合中移除迭代器 /返回的最后一個(gè)元素迭代器就是一種遍歷方法,它對(duì)各種容器集合類(lèi)的元素都以一種序列的方式進(jìn)行檢索,能夠讓程序員在不必了解集合的結(jié)構(gòu)細(xì)節(jié)的前提下完成對(duì)集合元素的操作。相比而言,迭代器遍歷需要編寫(xiě)的語(yǔ)句比較煩瑣,F(xiàn)or-each遍歷則是一種快捷的遍歷方法。Iterator接口還有一個(gè)子接口,其定義原型為java.util

15、.ListIterator,其中增加了幾個(gè)方法成員,可以實(shí)現(xiàn)雙向的遍歷操作。ListIterator一般只對(duì)LinkedList或其他可以實(shí)現(xiàn)雙向鏈接的鏈表進(jìn)行遍歷,并且可以在迭代期間修改列表,同時(shí)獲得迭代器在列表中的當(dāng)前位置。ListIterator沒(méi)有當(dāng)前元素,它的指針位置始終位于調(diào)用previous()方法所返回的元素和調(diào)用next()方法所返回的元素之間。在確定位置時(shí),使用的是Index索引值。在長(zhǎng)度為n的列表中,有n+1個(gè)有效的索引值,索引值0位于第一個(gè)元素之前,索引值1位于第一個(gè)元素與第二個(gè)元素之間,以此類(lèi)推,索引值n位于第n個(gè)元素之后。三、容器容器接口Collection定義了一

16、套實(shí)現(xiàn)數(shù)據(jù)類(lèi)型處理的公共方法集,可以在這個(gè)方法集的基礎(chǔ)上定義進(jìn)一步處理數(shù)據(jù)的方法。這個(gè)接口的定義原型為java.util.Collection,有一個(gè)默認(rèn)的實(shí)現(xiàn)類(lèi)java.util.AbstractCollection,以簡(jiǎn)單方式實(shí)現(xiàn)了Collection接口。Collection接口的繼承層次結(jié)構(gòu):由于這些接口派生自Iterable接口,因此它們都可以生成迭代器,并且實(shí)現(xiàn)類(lèi)的對(duì)象都可以使用For-each遍歷。四、列表接口List若干個(gè)實(shí)現(xiàn)類(lèi)完成了對(duì)列表功能的定義。與其他接口相比,List接口強(qiáng)調(diào)順序(Sequence)概念,其中的每個(gè)元素都有特定的順序位置,并且順序是不能被改動(dòng)的,可以通過(guò)

17、位置訪(fǎng)問(wèn)其中的每個(gè)元素,所以將List接口稱(chēng)為“有序的Collection”。列表的使用功能主要是通過(guò)List接口的兩個(gè)實(shí)現(xiàn)類(lèi)ArrayList和LinkedList體現(xiàn)的。下面分別介紹List接口的兩個(gè)實(shí)現(xiàn)類(lèi)ArrayList和LinkedList。ArrayListArrayList類(lèi)的定義原型為java.util.ArrayList。ArrayList類(lèi)善于隨機(jī)訪(fǎng)問(wèn)元素,但是如果需要在其元素中間插入和刪除一個(gè)元素時(shí),則需要移動(dòng)后面的所有元素,所以運(yùn)算比較慢。從實(shí)際功能上看,ArrayList類(lèi)實(shí)現(xiàn)了一個(gè)大小可調(diào)的數(shù)組,因此ArrayList類(lèi)也被稱(chēng)為動(dòng)態(tài)數(shù)組,在數(shù)值計(jì)算時(shí)有一定的優(yōu)勢(shì)。L

18、inkedListLinkedList類(lèi)也實(shí)現(xiàn)了List接口,在其元素中間插入和刪除一個(gè)元素時(shí)的計(jì)算效率比ArrayList類(lèi)高,但是在隨機(jī)訪(fǎng)問(wèn)時(shí)的表現(xiàn)比ArrayList類(lèi)遜色。在類(lèi)的內(nèi)部,LinkedList類(lèi)可以維護(hù)一個(gè)帶有頭節(jié)點(diǎn)的雙向鏈表,同時(shí)因?yàn)樗鼘?shí)現(xiàn)了Queue接口,所以可以作為棧、隊(duì)列或雙向隊(duì)列使用。五、集合集合接口Set定義原型為java.util.Set,其若干個(gè)實(shí)現(xiàn)類(lèi)完成了集合功能的定義。這里的集合實(shí)現(xiàn)了數(shù)學(xué)意義上的集合概念,其中的元素不可以重復(fù)出現(xiàn),卻不關(guān)注元素的順序。其常用的實(shí)現(xiàn)類(lèi)包括HashSet、TreeSet和LinkedHashSet。下面分別介紹Set接口的實(shí)

19、現(xiàn)類(lèi)HashSet、TreeSet和LinkedHashSet。HashSet類(lèi)的定義原型為java.util.HashSet,是為快速查詢(xún)而設(shè)計(jì)的集合,稱(chēng)為散列集合。其內(nèi)部維護(hù)了一個(gè)Hash表,存入其中的元素必須定義hashCode()方法,并且向其中添加元素的add()方法隱含了比較元素的步驟,要求添加的元素必須與已有的所有元素都不相同才能被添加。一般而言,HashSet類(lèi)的總體性能總是優(yōu)于TreeSet類(lèi)和LinkedHashSet類(lèi)。TreeSet類(lèi)的定義原型為java.util.TreeSet,是一個(gè)保持次序的集合,其內(nèi)部由一個(gè)數(shù)結(jié)構(gòu)維護(hù),并將元素存儲(chǔ)在紅-黑樹(shù)結(jié)構(gòu)中。TreeSet

20、類(lèi)最重要的性能是維護(hù)順序,可以從中提取有序序列,前提是元素類(lèi)型必須實(shí)現(xiàn)了Comparable接口,具有可比較屬性。LinkedHashSet類(lèi)的內(nèi)部使用鏈表維護(hù)元素的順序,其定義原型為java.util.LinkedHashSet,查詢(xún)操作的速度比較快,但是在插入、刪除操作方面就要慢得多。當(dāng)使用迭代器遍歷時(shí),元素的輸出順序就是元素的輸入順序?!纠?.9】使用HashSet 類(lèi)、TreeSet 類(lèi)和LinkedHashSet 類(lèi)六、隊(duì)列隊(duì)列是一個(gè)先進(jìn)先出的容器,在并發(fā)處理中具有重要的作用。隊(duì)列接口Queue也是從容器接口Collection派生而來(lái)的,其定義原型為java.util.Queue,

21、實(shí)現(xiàn)Queue接口的類(lèi)主要有LinkedList,并且該類(lèi)已經(jīng)很好地實(shí)現(xiàn)了隊(duì)列的功能,還有一個(gè)PriorityQueue類(lèi),其定義原型為java.util.PriorityQueue,是Java SE 5 版本中新增的,實(shí)現(xiàn)了優(yōu)先級(jí)隊(duì)列。七、映射映射實(shí)際上維護(hù)了一組鍵/值關(guān)系,即從鍵到值的對(duì)應(yīng)關(guān)系。Java語(yǔ)言的映射功能是通過(guò)Map接口和幾個(gè)主要的實(shí)現(xiàn)類(lèi)的定義完成的。Map接口的定義原型為java.util.Map,泛型變量K和V分別代表鍵和值。Map接口的元素是一組鍵/值對(duì),這些元素是無(wú)序的,其中的鍵是唯一的,在同一個(gè)Map接口中,不允許出現(xiàn)重復(fù)的鍵,但允許出現(xiàn)重復(fù)的值。Map接口沒(méi)有父接口

22、,也沒(méi)有繼承Iterable接口,因此Map接口的實(shí)現(xiàn)類(lèi)都不能生成迭代器,也不能使用For-each遍歷。在映射中存在3種視圖,即映射關(guān)系集合視圖、鍵的集合視圖和值的集合視圖,可以使用entrySet()方法、keySet()方法和values()方法分別獲取這3種視圖,并且可以通過(guò)對(duì)這3種視圖的遍歷實(shí)現(xiàn)對(duì)映射的遍歷。在Map接口的實(shí)現(xiàn)類(lèi)中,HashMap類(lèi)是最重要的,也是性能最好的,其他幾個(gè)實(shí)現(xiàn)類(lèi)則各有所長(zhǎng),亦各有所短。HashMap類(lèi)是最主要的Map接口實(shí)現(xiàn)類(lèi),其定義原型為java.util.HashMap,類(lèi)中的方法都是對(duì)Map接口中定義的方法的實(shí)現(xiàn)。在HashMap類(lèi)中維護(hù)了一個(gè)Has

23、h表,其性能會(huì)隨著容量的增大而降低,在其中進(jìn)行查找操作的代價(jià)比較小,進(jìn)行插入操作的代價(jià)比較大。HashMap類(lèi)是最具代表性的映射實(shí)現(xiàn)類(lèi),所以在大多數(shù)情況下,程序中使用的都是HashMap類(lèi)。java.util.LinkedHashMap類(lèi)類(lèi)似于HashMap類(lèi),在存儲(chǔ)鍵/值對(duì)時(shí)依然保留插入時(shí)的順序,在使用時(shí)的計(jì)算速度比HashMap類(lèi)慢,但是在迭代檢索時(shí)的速度比較快。其內(nèi)部維護(hù)了一個(gè)鏈表。java.util.TreeMap類(lèi)實(shí)現(xiàn)了紅-黑樹(shù),所得到的結(jié)果是經(jīng)過(guò)排序的,其中定義了一個(gè)subMap()方法,可以返回一個(gè)子樹(shù)。java.util.WeakHashMap類(lèi)稱(chēng)為弱鍵(Weak Key)映射,是專(zhuān)門(mén)為了解決某類(lèi)特殊問(wèn)題而設(shè)計(jì)的,如果在程序中沒(méi)有引用指向某個(gè)鍵,則這個(gè)鍵可以被釋放,并被垃圾收集器回收。java.util.IdentityHashMap類(lèi)使用運(yùn)算符“=”代替equals()方法來(lái)比較鍵,是一種特定應(yīng)用的映射實(shí)現(xiàn)類(lèi)。8.5注解一、什么是注解注解(Annotation)也稱(chēng)標(biāo)注,是從Java SE 5 版本開(kāi)始引入Java語(yǔ)言的一種注釋機(jī)制,是一種形式化地向程序代碼中添加信息的方法。這種方法在Java SE中有使用,在Java EE中的使用更為廣泛。注解本身

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論