Java-第05章-常用類講義_第1頁
Java-第05章-常用類講義_第2頁
Java-第05章-常用類講義_第3頁
Java-第05章-常用類講義_第4頁
Java-第05章-常用類講義_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、常用類1 Object 類1.1 Object類概述-類層次結(jié)構(gòu)的根類-所有類都直接或者間接的繼承自該類1.2 構(gòu)造方法一public Object()-回想面向?qū)ο笾袨槭裁凑f:? 子類的構(gòu)造方法默認(rèn)訪問的是父類的無參構(gòu)造方法講解每個(gè)方法的時(shí)候,查看源碼。1.3 public int hashCode()A:返回該對(duì)象的哈希碼值。默認(rèn)情況下,該方法會(huì)根據(jù)對(duì)象的地址來計(jì)算。B:不同對(duì)象的,hashCode()一般來說不會(huì)相同。但是,同一個(gè)對(duì)象的 hashCode()值肯定相同。C:不是對(duì)象的實(shí)際地址值,可以理解為邏輯地址值。舉例:物體和編號(hào)。1.4 public final Class getC

2、lass()A:返回此Object的運(yùn)行時(shí)類。B:可以通過Class類中的一個(gè)方法,獲取對(duì)象的真實(shí)類的全名稱。public String getName()1.5 public String toString()A:返回該對(duì)象的字符串表示。底層源碼。public static String valueOf(Object obj) return (obj = null) ? "null" : obj.toString();)B:它的值等于:getClass().getName() + '' + Integer.toHexString(hashCode()C:由

3、于默認(rèn)情況下的數(shù)據(jù)對(duì)我們來說沒有意義,一般建議重寫該方法。a:手動(dòng)重寫b:自動(dòng)生成1.6 public boolean equals(Object obj)A:指示其他某個(gè)對(duì)象是否與此對(duì)象“相等”。B:默認(rèn)情況下比較的是對(duì)象的引用是否相同。C:由于比較對(duì)象的引用沒有意義,一般建議重寫該方法。a:手動(dòng)重寫b:自動(dòng)生成口:=和equals()的區(qū)別。(面試題) 重寫 equals和 hashCode方法 equals():1. this = obj直接 return true2. obj = null直接 return false3. !(obj instanceof Person) 直接 ret

4、urn false4. 開始比較 name和ageOverridepublic int haslhCode() final int prine - 31;int result - 1;result = prime * result + age)result = prime * result + (name = null) > 0 : narDQ.hashCodG(); return result;Overridepublic boolean equals(Object obj) if (this = obj) return true)if (obj = null)return false

5、;if (getClass() != obj.getClass() return false;Person other = (Person) obj;if (age 1= other.age)return false;if (name = null) if (othertname != null)return false; else if (1 name.equals() return false;1.7 protected Object clone()注意:由于是protected修飾,與Object在不同包下只有子類在自己內(nèi)部才能訪問,所以必 需重寫clone方法創(chuàng)建并

6、返回此對(duì)象的一個(gè)副本,這種克隆機(jī)制十分高效,而且二者之間完全隔離。自定義類實(shí)現(xiàn)克隆步驟:A:自定義類實(shí)現(xiàn) Cloneable接口,這是一個(gè)標(biāo)記性接口,實(shí)現(xiàn)這個(gè)接口的類的對(duì)象 可以實(shí)現(xiàn)自我克隆。public class Student implements Cloneable只有實(shí)現(xiàn)了 Cloneable接口的類才能被克隆B:自定義類中重寫 Object類的clone()方法。C重寫clone()方法時(shí)通過super.clone()調(diào)用Object類的clone()方法來得到該對(duì)象的 副本,并返回該副本。注意:克隆和兩個(gè)引用指向同一個(gè)對(duì)象的區(qū)別?案例演示Student s = new Stude

7、nt();5.5。七由M總("三豐");s.setAge(20);s.setCar(new Car(“奔馳”,300000);Object clone = s.clonef);Student s2 = (Student)clone;Student s3 = s:System»out»print In (s * equals (s2); 克隆新創(chuàng)建內(nèi)存區(qū)域Syjturr.out.printlnVE.cqusljlsm,”/弓 I用指向同一內(nèi)存區(qū)域2 Scanner2.1 Scanner 類概述-JDK5以后用于獲取用戶的鍵盤輸入2.2 構(gòu)造方法- publ

8、ic Scanner(InputStream source)2.3 基本格式- hasNextXxx()判斷是否還有下一個(gè)輸入項(xiàng)淇中Xxx可以是Int,Double等。如果需要判斷是否包含下一個(gè)字符串,則可以省略Xxx- nextXxx()獲取下一個(gè)輸入項(xiàng)。Xxx的含義和上個(gè)方法中的 Xxx相同- 默認(rèn)情況下,Scanner使用空格,回車等作為分隔符案例:public static void main(String args) Srannpr scanner = new Scannpr(Systemwhile (scanner. hasNextlrrt () )int i = scanner.

9、nextlnt();System, out .print In ("你輸人的是:,Xi):)System println("over");)2.4 常用方法public int nextInt()public String nextLine()2.5 講一個(gè)/r/n 問題2.5.1 問題原因:先獲取一個(gè)int,再獲取一個(gè) String才會(huì)出問題.IM- Jh 、Scanner scanner - new Scanner(System.in);家履2個(gè)重問題/獲取,個(gè)Gtrin 沒何通先獲取一個(gè)String再菸的一 :mt.沒問胃/先萩取Tlot再弼一個(gè)ii唱.有問

10、題/ String合頤子/r7n解罰二排:int rextlnt - scdiimer. rex tint ();String string - null;if (scanner,nxtLine() 1= "/r/n ) string = scanner.nx±Line();System f gm f. println(ne?ctlnt); System,owt*printlnstring);2.5.2解決方案:1 .使用新的Scanner對(duì)象接收字符串2 .全部用nextLine接收,接收到之后再轉(zhuǎn)換成int3 String鍛常見)3.1 String類概述字符串是由多個(gè)

11、字符組成的一串?dāng)?shù)據(jù)(字符序列)字符串可以看成是字符數(shù)組3.2 構(gòu)造方法public String()- public String(byte bytes)- public String(byte bytes,int offset,int length)- public String(char value)- public String(char value,int offset,int count)- public String(String original)/耳字吊幼明畦拱為學(xué)總出 帔國Str ing( byte byts);byte b =String stri = new 5trlng

12、(b);Systemout.printin(str1);侍字用數(shù)組的一部分*蹈為字符串 new 5trirg(byte bytes, ijjt offset j»nj: length);String $tr2 - new String(bz 11 力;iystem,out.printIn(stri);將?,博組隹描為學(xué)才帶*川String<char values);chir chars = 找:JU而"/茂'String str? new String(char's);SystMiiotjt,prlntln(str3);/將字持?jǐn)?shù)第的一部分中賺為字符串

13、m Str'lng(har valuesj上工佳offsetirt count);String str4 = new Strif)g(chars lt 4);System.out.println(str4);“用原始字料申構(gòu)建3什"防除public StringfString original)String str5 = new 5ting("尋麗品帶我”);SysteHi.out.printLnCstrS);String str6 - “東方救工7System, out. printlfi (s tr6)sAPI:所有字符串字面值(如"abc"

14、)都作為此類的實(shí)例實(shí)現(xiàn)。 注意:String s =" helloworlds也是一個(gè)對(duì)象。3.2.1字符串內(nèi)存圖解(重要)String s =" hello ”;如果有就直接返回,沒有就創(chuàng)1 .字符串直接賦值的方式是先到字符串常量池中去找, 建并返回。2 .字符串一旦被賦值就不會(huì)被改變。3.3 面試題1(字符串創(chuàng)建問題)請(qǐng)指出:String si = new String( "helled String s2 = h卸?!钡膮^(qū)別 new出來的就在堆內(nèi)存,字符串就在方法區(qū)的字符串常量池 前者創(chuàng)建了 2個(gè)對(duì)象,后者1個(gè)。3.4 面試題2:字符串拼接問題-字符串比較之

15、看程序?qū)懡Y(jié)果:備注CC:String si = new String("hello");String s2 = new String("hello");System.out.println(s1=s2);System.out.println(s1.equals(s2);String s3 = new String("hello");String s4 = "hello"System.out.println(s3=s4);System.out.println(s3.equals(s4);String s5 = &qu

16、ot;hello"String s6 = "hello"System.out.println(s5=s6);System.out.println(s5.equals(s6);-字符串拼接之看程序?qū)懡Y(jié)果:備注DD:String s1 = "hello"String s2 = "world"String s3 = "helloworld"System.out.println(s3=s1+s2);字符串引用類型相加實(shí)際是新開辟空間:/s1+s2 編譯后:new StringBuilder(String.valu

17、eOf(s1).append(s2).toString()System.out.println(s3.equals(s1+s2);還可以通過Xjad查看class文件。通過反編譯,可以看出判斷s3 = "hello " +" woM1被編譯成:s3 =helloworld3.5 String類的判斷功能boolean equals(Object obj)boolean equalsIgnoreCase(String str)boolean contains(String str)boolean startsWith(String str)boolean endsW

18、ith(String str)boolean isEmpty()3.5.1 課堂練習(xí):模擬登錄,給三次機(jī)會(huì),并提示還有幾次。public static void nain(5tring args) /遂行比狡,結(jié)三次譏會(huì),用循環(huán)for (int i = 0; i < 3;/接受蕭久的兩個(gè)宇符由Scanner scanner - ne閃 Scanner(System,in);Systemtout. print (”請(qǐng)輸入月戶名')3String username = scanner.nextLine();System,out. print ("請(qǐng)輸入密鵑:;String

19、password - scanner *nextLine()j/如果用戶名密培王確,則蠟玩一個(gè)猜數(shù)字游戲if ("admin'1 .equals(username) && "admin".equals(password) GuesiNuinber. start ():break;elsa /alj則端出用戶名密g錯(cuò)三,探不近刷的機(jī)關(guān)點(diǎn)朝if C(2-i) = 9) System. out. printin (,還有 "+(2-i)+*機(jī)會(huì)”);Jelse 5y 5 tHm ut.println ("沒百機(jī)會(huì)了"

20、);)GuessGame:public static void start()“箜一個(gè)藉機(jī)斜(1 -100).#:日nd。*1),目reatpthan or equal to g«日 and less than int randcrnNtm = (int) (Math. rantfom() * 10e) +1;/啃壞內(nèi)進(jìn)行.浦中靖breakwhile(true)/)接收輔式勘字Scanner scanner = new canner(stefli.in);5y,tein*QLft.print("清訴入初學(xué) 1-1。; ")jint euf'ftNuhi =

21、 scanner.npxtTr»t();"大-就整掙不1* (gu屯g&Num > paridomNum) Sy stem, out + printing* >:7*);else if (guessNmn < Pdndomhjrti) Systerr ,Gut»println("小了;(Systprr.nr.prhitln(“信中了j荒谷! ! !): br«ak;)3.6 String類的獲取功能(自學(xué)+講授)int length()char charAt(int index)int indexOf(int ch)返

22、回指定字符在此字符串中第一次出現(xiàn)處的索引。參數(shù)類型是int而不是char的原因是:int可以接受int和char,而char只能接受char或65535以內(nèi)的int值,int的范圍更大(不需要掌握)int indexOf(String str)int indexOf(int ch,int fromIndex)int indexOf(String str,int fromIndex)String substring(int start)String substring(int start,int end)3.6.1 課堂練習(xí)1:遍歷獲取字符串中的每一個(gè)字符String s = helloworl

23、d'1;for (int i = 0; i < s, length。; i+) System,out* println(s *charAt(i);3.6.2 課堂練習(xí)2:統(tǒng)計(jì)一個(gè)字符串中大寫字母字符,小寫字母字符,數(shù)字字符由現(xiàn)的次數(shù)。(不考慮其他字符)String s = MHe 1 loWorIdl234*;System * out.printIn('a'+O);System-out,println( A*+0);Systeni * outt print In ('lr+0);int lower = 0;ini upper = 0;int num = 0

24、;for (int i = G; i < s .length::); i+)-/選擇結(jié)掏,使用ifif (s.charAt(l)+0)>=97) lower +;else if (s.charAt(i)4)>=65 && (s.charAt(i)+B)<=90) upper+jelse if (s.charAt(i)的)>=49 &&(s,charAt(i)+0)<7) num+4-;System»outfprintln(loer);/8SystArr.otJt .print In (upper ); /?Syste

25、m .out. prdntln(nurr) ;/4但是,實(shí)際上不需要轉(zhuǎn)成 ASCII碼,因?yàn)閏har類型在進(jìn)行關(guān)系運(yùn)算的時(shí)候,自動(dòng)會(huì)轉(zhuǎn)為int類型,其實(shí)就是比較的 ASCII碼。string s = "HolloWorldl234M;int lower = g;int upper - 6;int num = 0;for (int 1=0; i < $.length(); i+) if (s.charAt(i)>=1a' && s,charAt(i)<='z") lowers;Jelse if (s.charAt(i)>

26、='A'蝙 s.charAt') UPP&C+;1else if (5icharAt(i)>='0, && s.charAt(i)<="9") riunm-j)System-out.printIn(lower)j/8System.out.printIn(upper); /2Systemtout,printIn(num); /4byte getBytes()char口 toCharArray()static String valueOf(char chs)static String valueOf(int i

27、)String toLowerCase()String toUpperCase()String concat(String str)String s = ''helloworld"String &2 = " welcome"String s3 = " you"jString concat = s.concat(s2)*con<at(s3);3.7.1 課堂練習(xí):把一個(gè)字符串的首字母轉(zhuǎn)成大寫,其余為小寫。(只考慮英文大小寫字母字符)String s = "helloworld welcome you If;

28、/*分析:量到空格說明是一個(gè)新的開始.下一個(gè)全引對(duì)應(yīng)的字符使用toUpperCaseO方法 事方法:使用sub與t ring。方法截取字符串*/String = s.ubstring(0j 1).toLpperCaef)+£, substring(1);System<out * printin(s2);另外:String s - "hello xll I lave yoti'h;char= s,toChrArray();System.out -printIn('a1 -'A'for(lnt i =1 < char'Arra

29、y.length i +)if(i = 0)charArra/fi-=*2;)if(i != 0 && charArrayi-lJ = " " &S charArrayi > Tar 踽 charArrayi < ,z1 charArnayi -= 32;)String s2 - StrinE»ua.u?(7f(ch3rArray);System .print In (s?);?替換功能- String replace(char old,char new)- String replace(String old,String ne

30、w)?去除字符串兩空格一String trim()?按字典順序比較兩個(gè)字符串一 int compareTo(String str)- int compareToIgnoreCase(String str)String 0 = ''hello you weIcome"jString repinet? = s . replce( , ,*; /hellU yCXi .j(? 1 LOmeSystem.out,printin(repldte);/-hellu fCNJ .jeL(.'-ireSjt,println(s. replace ("youT, lh

31、VUU");Systemprintlrt(a*tinO);/hello you weJx凸旭Syste»»<?yt.printlrk(s.conipareTo(replice);/32個(gè)享用,Sy4tern<out*println(pareToIgnoreCaie(replace); ' /3.9 String類練習(xí)3.9.1 把數(shù)組中的數(shù)據(jù)按照指定個(gè)格式拼接成一個(gè)字符串- 舉例:int口 arr = 1,2,3;輸出結(jié)果:1,2, 3int) jrr * 1,2,3;String s - T;歷舊用拼結(jié)忖布,如需,:后一個(gè),可"提”

32、廣口】廠】“ 也才1?徙用岸目r-i <、"(or (int i = 6; i < arr, length;,,如臬一后TS剃拼事"”if (1 arr,Length-1) s * s + arrl t "Rhe f/Bt惜兄那打?qū)? "5 5 + arri) + “,"】 )3.9.2 字符串反轉(zhuǎn)- 舉例:鍵盤錄入"abcdefg”輸出結(jié)果:"gfedcba"方法一:交換字符數(shù)組法/反弼字符聿String s = abcde-fg"char| chanArry = s4toCharArray

33、();手利鉆能的.支轉(zhuǎn)i遍田乳ha3rr*. lerigth / 2for (int i - 0j i < charArraytlength/2; i+*) char c = charArray1;charArrayi = charArraycharArray.length - i - 1;對(duì)低的素引:3 - fl - 1charArraycharArray.Length - i - 1 = c;Stri ng val iifOf - tri ng. vol(jpQf(rharArray);System. out + println(valueOf);方法二:字符數(shù)組直接倒序遍歷賦給新的

34、字符串或字符數(shù)組String s = "abcdefg"char charArray = s.toCharArray();String s2 =for(int i = charArray.length-1) i>=0 ; i-)s2 = s2 + charArrayi; 字符串+其他類型二字符串)System.out,printin(s2);3.9.3舉例:統(tǒng)計(jì)大串中小串由現(xiàn)的次數(shù)在字符串“woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun 中java出現(xiàn)了 5次<1_F。

35、.JUP if l_String s = "woaijvawzhenai javawozlipriiieai jaya>jozhendphenai,javaxinbuxinwoai javagun,h;int num =電思瞪;1 .*還包含jgg芋竹國時(shí)l就堆巽看壞whi lefs. contai ns(" javart) ) £hile(s-rontainfif* java")int indexOf - indcxOf ("java")& - sisubstring(indc?xOf+);Sy stem.£

36、? tr t .prin tln(E);num +;)ysteffi.ot.printlfi(riidni);3.10 String 規(guī)則Object類規(guī)定如果根據(jù)equals(Object)方法,兩個(gè)對(duì)象是相等的,那么對(duì)這兩個(gè)對(duì)象中的每個(gè)對(duì)象調(diào)用 hashCode方法都必須生成相同的整數(shù)結(jié)果。所以:String si = new String( "hello*);String s2 = "hello"String s3 -Sy5teiri,o(jt.println(sl*hashCode();,SysteirHoot.printings2, hasliCodef

37、);/991tj2322SysteniL out. print ln(s3.hashCode( )/99162322Systcm,c>ut<println(sl « s2);/fdlseSvsltir.out .orintlnf s2 = ;3h"L 廣ue4 StringBuffer類概述及其構(gòu)造方法? StringBuffer 類概述- 我們?nèi)绻麑?duì)字符串進(jìn)行拼接操作,每次拼接,都會(huì)構(gòu)建一個(gè)新的String對(duì)象,既耗時(shí),又浪費(fèi)空間。而 StringBuffer就可以解決這個(gè)問題- 線程安全的可變字符序列? StringBuffer 和 String 的區(qū)另U

38、? 構(gòu)造方法- public StringBuffer()一 public StringBuffer(int capacity)一public StringBuffer(String str)StringBuffer sbl = new StringBuffer();StringBuffer sb2 = new StringBufferC"hello");StringBuffer 5b3 = new StringBuffer(50);Syoutfprin tin (sbl .opacity ();/16System.out,println(sb2,capacity();/2

39、1=16+5System.out.println(sb3.capacity()J;/50System.out -printIn(sbl.length()/0 System*out. printin (sb2, length ();5System.out. println(sb3, length () ) j司4.1 StringBuffer 類的成員方法4.1.1 添加功能一 public StringBuffer append(String str)一 public StringBuffer insert(int offset,String str)StringBuffer sb = new

40、 StringBuffer();"叩pnd。是在冷沖區(qū)若加數(shù)據(jù)j返回原來穗神區(qū)月景1 I I sb. append ("hello1') 3System, out* printin (sb);4.1.2 刪除功能-public StringBuffer deleteCharAt(int index)一 public StringBuffer delete(int start,int end)、j wiF ,StringBuffer 5b = new StringBuffer1。;mppend。是在覆沖區(qū)追加數(shù)據(jù),詆回際未的頻沖區(qū)對(duì)象I!sb.append("

41、;hello");/hellainsert(1, "abc/habcclla£b.delete(l 4);刪除自左不包石Mil。7/sb,delete:harAt(l);System, otft.println(&b);刪除所有數(shù)據(jù)sb.delete(0, sb.length();注:在java中xxx(int start, int end) 普遍是包左不包右4.1.3 替換功能- public StringBuffer replace(int start,int end,String str)S±ringBu4fer = new StringB

42、uHer();叩pgrd()是在潮中區(qū)追加射陰,返回原來的桀井區(qū)對(duì)象! 11 sb.append("hello world"*);/hyllo wnldsb,rpplarp(0,力"節(jié)日忸樂節(jié)日忸樂“Mid 5yst5.out.printIn(sb);4.1.4 反轉(zhuǎn)功能? public StringBuffer reverse()sb.append(,Phello world,);/hllo worldsb. reversed ;/dlrow olluhSyStem.out.printInfsb);4.1.5 截取功能- public String substr

43、ing(int start)- public String substring(int start,int end) 唯一的不同是:返回值類型4.2 String 和 StringBuffer的相互轉(zhuǎn)換/String廠轉(zhuǎn)換String str ="我想放假'/方式一:使用構(gòu)造方法,想轉(zhuǎn)成證就用誰構(gòu)建StringBuffer sb = new StringBufferCtr");方式二:append方法StringBuffer sb2 = new StringBuf-Fer();5 b2 . append(str);/StringBufferString轉(zhuǎn)瘓Strin

44、gBuffer sb 二 new StringBuffer("我想旅游”);方式一;與tring構(gòu)造String str = new String(sb);/方式二:ing()方法Str in 目 |str2| = sb.toString();|4.2.1 練習(xí)1 :把數(shù)組拼接成一個(gè)字符串之前的做法:public static void main(String-l args) 打嗪一個(gè)飄身成為宇料串3nt口 a£C= 1,2,3); -> b 2. 3 int arr =11,23,4567,89jString str = array oString(arr'

45、) j System.outi println(str);)private static String arrayTaString(int arr) 1 .小左括乏String s - "*; _. Hi r« _S +=;/2,我甲間j調(diào)歷班組for(int i = B; 1 c arr*length j i+)/如果是最后一個(gè),只出摟3 rr i if (i=arr, lengrth-l)s += arr1;else(s *= arri- ' )J/3.探古邊軍號(hào)$ += T;return s;改進(jìn)后,使用StringBuffer :public static

46、void main(String args) /J拼接一i制組成為字行串int arr- 1,23); -> 1, 2, 3 int arr = 11,23,45,67j89;StringBuffer str - arrayToString(3rr');Systeir .Dut.printlnfstr);private static StringBuffer arrayToString(int arr) "1.掙主括號(hào)StringBuffer sb = new Stringfluffer();sFTappcndpTTj/3拼中間F遍歷數(shù)組forfint i = R; i

47、 < arr» Lentn j如果是最后一個(gè)> RRfSarrfiifi=arr*length-1)sb.append( arr| i J);else如祟不是最后一個(gè),拼便世匚” sb.appnd(arriJappend(b,j ");)/二掙右邊括號(hào)sb.append("h,)jreturn sb;不要演示了,String比StringBuild更快.拼接一個(gè)數(shù)組成為字符串;或I 贏=-> 1, 2, 3 int arr = 11,23-45>67,89;long start = System, currer?trimeMlLis();f

48、or (int i = 0; i < 100000; i+) StringBuffer sb = arrayToStringBuffr(arr);/String str = arrayToString(arr);long end = System * currentTimeMiLLis()System.out.printIn(end - start);4.2.2 練習(xí)2:把字符串反轉(zhuǎn)(簡潔)public static void main(String args) /字符串反轉(zhuǎn)String str = "我愛老婆大人、String myReverse = myReverse(st

49、r);System-owt.println(imyReverse);private static String myReverse(String str)return new StringBuffertstr).reverse().toString();注:任何引用類型調(diào)用toString()方法都可以轉(zhuǎn)換成字符串4.2.3 練習(xí)3:判斷一個(gè)字符串是否是對(duì)稱字符串- 例如"abc"不是對(duì)稱字符串,"aba"、"abba"、"aaa"、"mnanm"是對(duì)稱字符串 方法一:到臚一卜學(xué)特曲是百討論St

50、ring str = '由abd"Syst«iut fcprintlri(isSyfflRietr(fitr);1private static Rcx>l/刁口 iSyminetry(String htr) char| chrArray = str-toCharArray() jfor(Int i = i c=i-f (charArrayi) 1= CharArrayTcharray length -i -11|) return fslsereturn true;方法二:使用 StringBuffer的reverse方法注意:StringBuffer沒有重寫e

51、quals()方法,所以不要直接使用 StringBuffer的equals()/判斷一個(gè)字為串是否對(duì)稱String str - "ababa"jSystem.out.printIn(isSymmetry?(str)j ?private static Boolean isSymmetry2(Stringr)return new StringBijffer(tr) * r>VArsA() toString() pquals(str); 不加toString()方法不行5數(shù)組高級(jí)(排序和查找)5.1排序 5.1.1冒泡排序? 相鄰元素兩兩比較,大的往后放,第一次完畢,最大

52、值出現(xiàn)在了最 大索引處public static lnt sort(int arr),/百咆排序,第一次比較for(int i=0; i < arr*length - 1 ; i +) if (arri >= arri+l) Int temp = arri;arri = arri +1;arr- +1= tprup;/吉咆叫自述一次比較'For(int i = Oj i < arrtlentti - 1 -1 ; i +)if eirri >=(int temp = arri;arr,fi = af'r i+l;arri+1 = temp;),/可M推導(dǎo)

53、出,只有fu揩坪中關(guān)系表述式2在變化,口循環(huán)比較aiT.lw培l(xiāng)h 1次return arrj因?yàn)楣惭h(huán)比較arr.length-1次,由此推導(dǎo)出: public static lnt sor L(lntJ an )"日.'盟直照廿一的七總城for(lnt n = 0; n < arr.length - 1 ; n+)“第n+1次比較for(int i = 0; i < arr<length - 1 - n j i +) if arrl >= arri+ll) int temp = arrfi;arr-i = arr|i+l ;srrj+l= tamp

54、;)5.1.2 練習(xí):對(duì)字符串排序String str =" vavdfsdnfna va ”private static char sort(char charArray) /冒咆排片,排胃rvl&nbh - 1次大的往后放forfitit n = O; n < charArray< length 1; n+) for(int i = 0; i < charArray-length - 1 -n; i+ )if (charArrayfi>charArrayi+l) char t&mp = charArrayiicharArrayi = cha

55、rArrayl+l) charArrayi+l = teirp;)進(jìn)行冒泡排序的思路就是:第一層循環(huán)比較length-1次,第二層就考慮每次循環(huán)范圍就行。5.1.3 選擇排序? 從0索引開始,依次和后面元素比較,小的往前放,第一次完畢, 最小值出現(xiàn)在了最小索引處)/選擇排序Iprivate static int sort(int| 日rr) 川蕓一獷怎環(huán)比篙:也樂,獷;0眼后面所口眄比較,疆;隹胞何2叫口for(int i - 0; i <arrilength - 1; i+)(if(arr0 > arri+lj)int temp = arr|0 ;arr白=arri +1; ar

56、ri+l = temp;)/黃二次糖瑋.從期后面所有的比較r最小的放回臺(tái),for(int i = 1; i< arr*length - 1; i+)if (arr|1| > arri+1 ) int temp = arrfl1" arrl - arri+l;rri+lj - temp;) ')".增S要滑M比段曰r* length-1次 return arr;)因?yàn)楣惭h(huán)比較arr.length-1次,由此推導(dǎo)出:選擇排再private static lnt sort(int arrJ (.共需要循環(huán)比較nrr.lngth-l改+or(iht n = 0

57、; n < arr.length - 1; n+),/第口友循環(huán)比技:翻據(jù)rr。跟后面所有的比輕j晟小的政回nl。for(int i - n; i <arr*length - 1; i+)( if(arrn > arri+l)int temp = drrn;arrn = arr-i+l;jrrfi+1 = tempj)return arr;)n個(gè)開選擇排序的思想就是:第一層循環(huán)是排的次數(shù)arr.length-1次,第二層循環(huán)是:從第始,和后面所有的進(jìn)行比較,最小的放在第n個(gè)位置。6 Arrays類概述及其常用方法6.1 Arrays類概述-針對(duì)數(shù)組進(jìn)行操作的工具類。-提供了排序,查找等功能。6.2 成員方法- public

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論