版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Object類Object類是Java程序或類庫中所有類的直接或間接父類,所有對象(包括數(shù)組)都實現(xiàn)這個類的方法Object類擴(kuò)大了方法的適用范圍,例
Voidfun(Objecto)可以將任意類型的對象傳遞給它Object類中的主要方法介紹1Object類Wait():當(dāng)一個線程執(zhí)行了一個對象的wait()方法時,該線程就會處于該對象的等待池中Notify():當(dāng)一個線程執(zhí)行了一個對象的notify方法時,就會喚醒該對象等待池中一個線程notifyAll():當(dāng)一個線程執(zhí)行了一個對象的notify方法時,就會喚醒該對象等待池中所有線程2Object類protectednativeObjectclone()throwsCloneNotSupportedException;生成當(dāng)前對象的一個備份應(yīng)用clone()方法 參見mypack2.TestClone1.java應(yīng)用該方法的對象必須實現(xiàn)Cloneable接口,否則異常。必須重寫clone()方法。在該方法中必須使用super.clone();注意shallowclone與deepclone:mypack2.TestClone2.java3Equals()方法提供對象是否“==”的判斷Object類的equals方法實現(xiàn)
publicbooleanequals(Objecto){ returnthis==o; }但包裝類,String類等覆蓋了該方法,只要類型一致,狀態(tài)和行為相等就視為相等hashCode()返回對象的散列值Object類的hashCode方法實現(xiàn)是將對象內(nèi)存地址轉(zhuǎn)換成一個整數(shù),所以,不同對象的散列值不同。Object類4對象的toString方法返回對象的文本表示。Object類的實現(xiàn):
publicStringtoString(){
returngetClass().getName()+'@'+Integer.toHexString(hashCode());
}但包裝類,String,StringBuffer類都覆蓋了toString方法,返回具有更加實際意義的內(nèi)容Object類5publicfinalclassClass<T>extendsObjectT:由此Class對象建模的類的類型。例如,String.class
的類型是Class<String>Class類對象表示正在運行的Java應(yīng)用程序中的類和接口Class類對象是在Jvm裝載類時創(chuàng)建通過Class對象可以獲得對象的域、方法等信息。這種獲得運行時對象信息的方法又稱為反射(Reflection)參見mypack1.RunTimeClassInfo.javaClass類6包裝類是基本類型的面向?qū)ο蟮拇恚╥nt,Integer)每個基本數(shù)據(jù)類型都對應(yīng)一個包裝類包裝類提供了對象相等判斷和大小判斷包裝類對象封裝的數(shù)據(jù)不可更改(immutable),若要更改則需重新生成新的對象參見例7-4:DoubleAndString.javaWrapperclasses包裝類7包裝類列表8數(shù)學(xué)類提供常見的指數(shù)運算,對數(shù)運算,三角函數(shù)運算等數(shù)學(xué)運算Math類是final的Math類的構(gòu)造方法是private的Math類提供的方法都是靜態(tài)的常用的方法有:
absrandommaxminroundfloorceillogexpsqrt
pow
三角函數(shù)等參見例7-5:TestMath.javaMath類
9System類publicfinalclassSystemextendsObjectPublicstaticfinal
InputStream
in:
“標(biāo)準(zhǔn)”輸入流Publicstatic
finalPrintStream
out:
“標(biāo)準(zhǔn)”輸出流Publicstatic
finalPrintStream
err:
“標(biāo)準(zhǔn)”錯誤輸出流Charc=System.in.read();System.out.println(“hello”);10System類PublicstaticlongcurrentTimeMillis()Publicstaticvoidexit(intstatus)Publicstaticvoidgc()PublicstaticPropertiesgetProperties()詳細(xì)情況請參見Jdk
api.11Java中,字符串都是用類的對象來實現(xiàn)的兩類字符串String:創(chuàng)建后不會再做修改或變動的字符串常量StringBuffer:創(chuàng)建后允許再做更改和變化的字符串字符串類12String類String中的equals()方法覆蓋了Object的equals()方法,只要內(nèi)容相同就返回true.由于字符串對象的大量使用,Java中為了節(jié)省內(nèi)存空間和運行時間,在編譯階段就把所有的字符串文字放到一個文字池中,其中所有相同的字符串常量被合并,只占用一個空間。13String類Strings1="abc";
Strings2="abc";
if(s1==s2)
System.out.println("s1,s2refertothesameobject");
else
System.out.println(“s1,s2refertothedifferentobject");問題:共創(chuàng)建了幾個StringObject?14String類Strings3=newString(“def”);Strings4=newString(“def”);問題:共創(chuàng)建了幾個StringObject?S3==s4?15String類常見的字符串賦值方法例7-6:StringAssign.java常見的字符串方法應(yīng)用例7-7:TestStringMethod.java16String類在字符串中檢索特定字符或子字符串,如果找到,則返回匹配成功的位置,否則返回-1indexOf():從字符串的首位開始查找lastIndexOf():從字符串的末尾開始查找Stringstr=“HelloHelloHello”;System.out.println(str.indexOf(‘e’));//1System.out.println(str.indexOf(‘e’,2));//6System.out.println(str.lastIndexOf(‘e’));//11System.out.println(str.indexOf(“ello”,2));//6System.out.println(str.lastIndexOf(“Hello”),11);//5System.out.println(str.indexOf(“Ello”));//-117String類Concat(String
str):把字符串str附加在當(dāng)前字符串的末尾Strings1=“Hello”;Strings2=s1.concat(“World”);System.out.println(s1);//HelloSystem.out.println(s2);//HelloWorld上述concat()方法并不會改變s1本身的內(nèi)容18String類subString():返回字符串的一個子字符串PublicStringsubString(int
beginIndex):子串起始位置beginIndex,結(jié)束位置為字符串長度-1PublicStringsubString(int
beginIndex,int
endIndex):子串起始位置beginIndex,結(jié)束位置endIndex-1Stringstr=“0123456”;Stringsub1=str.subString(2);//23456Stringsub2=str.subString(2,5);//23419Astringbufferimplementsamutablesequenceofcharacters。以緩沖區(qū)的形式存儲管理字符串?dāng)?shù)據(jù),而不象String那樣是immutable,如果頻繁地對某個字符串?dāng)?shù)據(jù)進(jìn)行處理,那么應(yīng)該選擇StringBuffer,因為它封裝的數(shù)據(jù)是可變的。字符串緩沖區(qū)的長度是可變的,它的增長策略是將原來的長度翻倍再加2。常用的方法有insert,append,substring"a"+4+"b"會被編譯器解釋為
newStringBuffer().append("a")
.append(4).append("b").toString()StringBuffer類20StringBuffer類Append():StringBuffer
sb=newStringBuffer();Sb.append(“Hello”);Sb.append(“World”);System.out.println(sb);//HelloWorldInsert():StringBuffer
sb=newStringBuffer(“0456”);Sb.insert(1,”123”);System.out.println(sb);//012345621String與StringBuffer的區(qū)別String類不可編輯,StringBuffer類可編輯Strings1=newString(“abc”);S1.concat(“def”);StringBuffersb1=newStringBuffer(“abc”);Sb1.append(“def”);System.out.println(s1);//abcSystem.out.println(sb1);//abcdef畫出其存儲空間22StringTokenizer類Java.util.StringTokenizer類提供了對字符串進(jìn)行解析和分解的功能StringTokenizer(String
str)StringTokenizer(String
str,String
delim)StringTokenizer(String
str,String
delim,boolean
returnDelims)見TestStringTokenizer.java23集合對象就是一組對象的表示,即用一個對象代表一組對象。集合中每個對象稱為集合的一個元素集合與數(shù)組的區(qū)別:集合中的元素都是對象的引用,基本數(shù)據(jù)類型要使用其包裝類才能作為集合的元素,集合中各個元素的具體類型可以不同,只要是從相同的類派生而來就行集合類庫CollectionAPI24集合的分類Java集合主要分為三種:Set(集):集合中的元素不按特定方式排序,并且沒有重復(fù)對象List(列表):集合中的元素按照索引位置排序,可以有重復(fù)元素,允許按照元素在集合中的索引位置檢索元素。與數(shù)組相似Map(映射):集合中的每個元素包含一對鍵-值對(key-value),集合中沒有重復(fù)的鍵對象,值對象可以重復(fù)25Collection接口Collection是Collection層次結(jié)構(gòu)中的根接口。Collection表示一組對象,一些collection允許有重復(fù)的元素,而另一些則不允許。一些collection是有序的,而另一些則是無序的。JDK不提供此接口的任何直接實現(xiàn):它提供更具體的子接口(如Set和List)實現(xiàn)。Java集合框架給出了幾個簡單通用的集合定義,它們在java.util包中2627Set接口及HashSet類Set接口是Collection的子接口,不記錄元素的順序,元素不可重復(fù)HashSet是實現(xiàn)Set接口的一個類,該類按照哈希算法來存取集合中的對象,存取速度較快Set表示的是不重復(fù)(a.equals(b))的元素的集合Set中可以包含null對象,但最多只能有一個null對象28Set接口及HashSet類Set<String>set=newHashSet<String>();Strings1=newString(“hello”);Strings2=s1;Strings3=newString(“world”);set.add(s1);set.add(s2);set.add(s3);System.out.println(set.size());//?參見Mypack1.TestHashSet.java29List接口及ArrayList,Vector及LinkedList類List接口是Collection的子接口,其元素以線性方式存儲,且允許有重復(fù)元素ArrayList,LinkedList,Vector是List接口的重要實現(xiàn),是Java中的“動態(tài)數(shù)組”,元素可以加入和移除ArrayList與Vector類似,區(qū)別是:Vector是線程安全的(synchronized)30ArrayListArrayList代表長度可變的數(shù)組,允許對元素進(jìn)行快速的隨機(jī)訪問,但是插入與刪除元素的速度較慢參見mypack1.TestArrayList.java31LinkedListLinkedList在實現(xiàn)中采用鏈表數(shù)據(jù)結(jié)構(gòu),插入刪除元素的速度較快,隨機(jī)訪問則相對較慢,可作為堆棧、隊列使用LinkedList實現(xiàn)隊列:參見 mypack1.TestQueue.java32Vector向量Vector是java.util包中用來存放不同類型元素的變長數(shù)組其中的元素不能是簡單數(shù)據(jù)類型,如int等PublicVector(int
initCapacity,int
capacityIncrement)addElement(Object
obj)insertElement(Object,intindex)setElementAt(Object
obj,intindex)BooleanremoveElement(Object
obj)33Vector向量VoidremoveElementAt(intindex)VoidremoveAllElement()ObjectelementAt(intindex)Int
indexOf(Object
obj,int
start_index)Int
lastIndexOf(Object
obj,int
start_index)見PhotoAlbum.javaStack是Vector的子類,故棧中對象都是Object對象或是其子類對象見mypack1.Stacks.java34接口Iterator(迭代器)和Enumeration(枚舉器)都是用來存取集合中元素的,建議用前者見mypack1.TestListAllElements.java列舉器Iterator&Enumeration35Map接口和Hashtable類Map接口是將鍵映射到值的對象。一個映射不能包含重復(fù)的鍵,每個鍵最多只能映射到一個值。Objectget(Objectkey)Objectput(Object
key,Objectvalue)Map接口的重要實現(xiàn)類有:Hashtable,HashMap,TreeMap,Properties等。其中,Properties是Hashtable的子類,其關(guān)鍵字及值都限于String類見TestHashtable.java36HashMap&Hashtable二者皆提供Map接口的實現(xiàn)。HashMap是未同步的集合,Hashtable是同步的集合。Hashtable不接受null作為key或者value。HashMap接受null作為key或者value。37Collections類Java.util.Collections類是一個針對List具有排序、查找、反序等功能的類Publicstaticvoidsort(Listlist)Publicstaticvoidsort(List
list,Comparatorc)Publicstaticint
binarySearch(List
list,Objectkey)Publicstaticint
binarySearch(List
list,Object
key,Comparatorc)Note:對于binarySearch要求list已按升序排好38Collections類比較規(guī)則:若不提供Comparator,則List中的對象必須實現(xiàn)java.lang.Comparable接口(int
compareTo(Object
obj);根據(jù)大小關(guān)系比較)提供Comparator:Int
compare(Objecto1,Objecto2)Booleanequals(Object
obj)Referencetomypack2.TestCollectionsSort.java39Generic泛型Generic是Jdk1.5新增加的Java語言特性適用場合:集合中所有元素都是同一種類型Vectorv=newVector();V.addElement(“one”);
v.addElement(new
Person(“me”));Strings=(String)v.elementAt(0);不能保證插入的元素都是同種類型元素取出時必須做強(qiáng)制類型轉(zhuǎn)換40Generic泛型采用泛型的情況:Vector<String>v=newVector<String>();V.addE
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)新教師的培訓(xùn)工作計劃范文
- 2025初三新學(xué)期個人學(xué)習(xí)計劃書2
- 幼兒園中秋節(jié)活動計劃
- 公司業(yè)務(wù)員個人工作回顧及發(fā)展計劃
- 2025稅務(wù)部門年終工作計劃
- 門五金商業(yè)計劃書
- 2025語文一年級下冊學(xué)期教學(xué)計劃
- 《地震地質(zhì)基礎(chǔ)》課件
- 《地鐵暗挖施工工法》課件
- 2024年廣東省公需課《百縣千鎮(zhèn)萬村高質(zhì)量發(fā)展工程與城鄉(xiāng)區(qū)域協(xié)調(diào)發(fā)展》考試答案
- 人教部編版二年級語文上冊課后練習(xí)及參考答案
- 義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2024年版)
- 專題08 探索與表達(dá)規(guī)律(解析版)
- 心理統(tǒng)計學(xué)統(tǒng)計方法
- 中職高二數(shù)學(xué)下學(xué)期期末考試試題卷(含答題卷、參考答案)
- 2024年公務(wù)員(國考)之行政職業(yè)能力測驗真題及參考答案(完整版)
- 北斗創(chuàng)新設(shè)計導(dǎo)航-知到答案、智慧樹答案
- 天文地理知識競賽答案省公開課一等獎全國示范課微課金獎?wù)n件
- 醫(yī)學(xué)心理學(xué)(廣東藥科大學(xué))智慧樹知到期末考試答案2024年
- MOOC 西方園林歷史與藝術(shù)-北京林業(yè)大學(xué) 中國大學(xué)慕課答案
評論
0/150
提交評論