![java基礎(chǔ)學(xué)習(xí)筆記_第1頁](http://file4.renrendoc.com/view/46b49b6ef9a7ecee417ae4c181233f4c/46b49b6ef9a7ecee417ae4c181233f4c1.gif)
![java基礎(chǔ)學(xué)習(xí)筆記_第2頁](http://file4.renrendoc.com/view/46b49b6ef9a7ecee417ae4c181233f4c/46b49b6ef9a7ecee417ae4c181233f4c2.gif)
![java基礎(chǔ)學(xué)習(xí)筆記_第3頁](http://file4.renrendoc.com/view/46b49b6ef9a7ecee417ae4c181233f4c/46b49b6ef9a7ecee417ae4c181233f4c3.gif)
![java基礎(chǔ)學(xué)習(xí)筆記_第4頁](http://file4.renrendoc.com/view/46b49b6ef9a7ecee417ae4c181233f4c/46b49b6ef9a7ecee417ae4c181233f4c4.gif)
![java基礎(chǔ)學(xué)習(xí)筆記_第5頁](http://file4.renrendoc.com/view/46b49b6ef9a7ecee417ae4c181233f4c/46b49b6ef9a7ecee417ae4c181233f4c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java基礎(chǔ)學(xué)習(xí).ScannerScannersc=newScanner(System.in)Intnum=sc.nextINT();Stringstr=sc.next()Inttemp=a>b?a:b;a大于b嗎大于的話就是a否那么是b.匿名對象如果只使用唯一的一次如publicclassPerson(){Stringname;Publilcvoidshowname(){(我是:"+same)}}非匿名對象Personper=newperson()Pe「.name='李飛'匿名對象Newperson(),name=1ifeiz匿名對象作為方法參數(shù)Publicstaticvoidmain(String[]args){methodParam(newScanner(System.in))}PublicstaticvoidmerhodParam(Scannersc){Intnum=sc.nextint();System.out.print('輸入的是'+num)}.隨機數(shù)Randomr=newRandom();Intnum=r.nextint()Intnum=r.nextint(10);隨機0-9.對象數(shù)組Publicclassperson{PrivateStringname;Privatrintagr;Fw.write(cs)Fw.write「黑馬程序員〃)寫字符串Fw.close();.Properties集合唯一和io流結(jié)合的集合雙列集合key和value都是StringPropertiespr=newProperties();Pr.setProperty(''趙麗穎",168);Set<String>set=pr.stringpropertyName();#取出鍵值放在set集合中For(Stringkey:set){Stringvalue=pr.getProperty(key);#使用增強for)使用store方法將數(shù)據(jù)存儲進文件如,txt文件使用字符流時Filewriterfw=newFileWriter,'…\data.txt")可以讀取中文Pr.store(fw/savedata")使用load方法將文件中數(shù)據(jù)以鍵值對的讀取到控制臺遍歷出來Pr.load(newFileReader('\..\data.txtz,))Set<String>set=p「.stringpropertyNdme();#取出鍵值放在set集合中For(Stringkey:set){Stringvalue=pr.getProperty(key);#使用增強for}24,緩沖流.final關(guān)鍵字內(nèi)部類Final修飾類時不能有子類其成員方法因為沒有子類也不可以重寫PublicfinalclassMyclass{Publicvoidmethod(){}}Final修飾局部變量這個變量永不變內(nèi)部類是在類中的局部內(nèi)部類在類的成員方法中同類同包不同包不同包非尋BBprivateyesdefaultyesyesprotectedyesyesyespublicyesyesyesyes.equals方法基本類型比擬值引用類型比擬地址值Objects的equals方法可以防止空指針異常迭代器針對集合循環(huán)遍歷如Collection<String>coll=newArraylist<>();創(chuàng)立了集合對象使用多態(tài)接口new實現(xiàn)類Coll.add('asd')Iterator<String>it=coll,iterator();While(it.hasNext()){hasNext判斷集合中還有下一個元素嗎返回值為false或者trueStringe=it.next();next。取出元素Sout(e))增強f。「循環(huán):遍歷數(shù)組或者集合For(集合/數(shù)組數(shù)據(jù)類型變量名:集合名/數(shù)組名){system,out.print(變量名)}.File類文件遍歷用list或者listfilesFilefile=newFile(”c:\\a\\b〃)String[]arr=file.list();For(Stringfilename:arr){Sout(filename)}.遞歸遞歸需要條件限定保證遞歸能停下來不然會導(dǎo)致棧內(nèi)存溢出有限定條件次數(shù)太多也會導(dǎo)致溢出.緩沖流對基本流的增強增加緩沖區(qū)相當于數(shù)組(一次存儲多個)增強效率FileoutoutStreamfos=newFileoutoutStream字節(jié)輸入輸知名流BufferedoutoutStreambos=newBufferedoutoutStream(fos);Bos.write(''123456〃)Bos.flush();Bos.close();outputstream把數(shù)據(jù)寫入文件中字節(jié)輸入流Fileinputstreamfis=newFileinputstream(x12\\0,txt,)Bufferedinputstreambis=newBufferedinputstream(fis)Intlen=0;While(len=bis.read()!=-1){Sout(len))Bis.close()字節(jié)輸入流讀取數(shù)據(jù)到控制塔這里利用字節(jié)數(shù)組存儲一次性讀取Fileinputstreamfis=newFileinputstream('12\\0.txt')Bufferedinputstreambis=newBufferedinputstream(fis)Byte[]byte=newbyte[1024]Intlen=O;While(len=bis.read(byte)!=-1){Soutn(newString(byte,O,len))}Bis.close()復(fù)制文件先輸入在輸出字符緩沖流字符輸出流BufferedWriterbw=newBufferedWriter(newfilewriter(''10\\0.txrt,z))Bw.write("lovE〃)將love寫入O.txt字符緩沖輸入流BufferedReaderbw=newBufferedReader(newfilereaser(u10\\0.txrt,z))Readline。讀一行Stringline;Whlie((line=br.readline())!=null){Sout(lilne)}.轉(zhuǎn)換流即編碼與解碼UTF-8gbk等.序列化與反序列化把對象以流的方式寫入文件就叫對象的序列化因為對象包括字符與字節(jié)ObjectOutputstream對象的序列化流writeObject(p)序列化時類必須實現(xiàn)Serializable接口把文件中保存的對象以流的方式讀取出來叫做讀對象也叫對象的反序列化Objectinoutstream對象的反序列化流readObject(p)打印流Printstream.軟件結(jié)構(gòu)C/S結(jié)構(gòu)如QQ網(wǎng)盤客戶端與服務(wù)器b/s結(jié)構(gòu)如谷歌火狐瀏覽器與服務(wù)器.網(wǎng)絡(luò)通信協(xié)議TCP/IP協(xié)議傳輸控制協(xié)議包括四層應(yīng)用層ftptftodns傳輸層tcpudp網(wǎng)絡(luò)層icmpip物理層udp協(xié)議無連接通信協(xié)議如視頻會議qqTCP協(xié)議面向連接的協(xié)議三次握手文件下載瀏覽網(wǎng)頁.客戶端向服務(wù)器端發(fā)送連接請求等待服務(wù)器確認.服務(wù)器端向客戶端會送一個響應(yīng)通知客戶端收到請求.客戶端再次向服務(wù)器端發(fā)送請求確認連接TCP通信協(xié)議Socket和字符字節(jié)流Stream流屬于管道流只能使用一次List<string>list=newArraylist<>();List.add(”張王玉〃);List.add(”張2玉〃);List.add(''張3玉〃);List.stream()?filter(name->name.startswith(¥K")).filter(name->name.legthn()=3).filter(name->System.out.print(name))Foreach方法Stream<string>stream=stream,of(、'1〃,〃2〃)Stream.foreach((Stringname)->{System.out.print(name)})Filter過濾方法Stream.filter((stringname)->{returnname.startswith("張〃)})輸出列表中以張開頭的字符串還有map映射方法skip跳過方法count統(tǒng)計方法concat合并兩個流junit單元測試黑盒白盒單元測試白盒測試.定義一個測試類2,定義測試方法:可以獨立運行.給方法加@test注解.導(dǎo)入Junit包利用assert斷言方法Assert.assertEquals(expected,result)期望值和真實值36.反射很多優(yōu)秀的開源框架都是通過反射完成的,比方最初的很多注解框架框架的靈魂將類的各個組成局部封裝成其他對象獲取Class對象的方式:.class.forname('全類名'):將字節(jié)碼文件加載進內(nèi)存返回class對象*多用于配置文件將類名定義在配置文件中讀取文件加載類2.類名.class:通過類名的屬性class獲取*多用于參數(shù)的傳遞3,對象,getclass():getclass()方法在Object類中定Class對象的功能獲取成員變量獲取構(gòu)造方法獲取成員方法4,獲取類名案例:寫一個框架不能改變該類的任何代碼可以幫我們創(chuàng)立任意類對象執(zhí)行任意方法實現(xiàn):配置反射步驟:1.將需要創(chuàng)立的對象全類名和需要執(zhí)行的方法定義在配置文件中.在程序中加載讀取配置文件,使用反射技術(shù)加載類文件進內(nèi)存.創(chuàng)立對象.執(zhí)行方法37,注解本質(zhì)就是接口編寫文檔生成doc文檔如javaAPI代碼分析編譯檢查Publicperson(){}Publicperson(stringnamejntage){T=name;This.age=age;}Publicstringgetname(){4Returnname;}Publicvoidsetname(Stringname){T=name;}}Person[]array=newperson[3];Personone=newperson('123',12);Persontwo=newperson('135zz22);Array[0]=one;Array[l]=two;System.out.print(array[O].getname());.集合類arraylist長度可以變化Arraylist<E>E代表一個類型比方String類型是引用類型不是基本類型Arraylist<String>list=newArraylist<>();List.add()List.get()List,remove。List.size();基本byteshortintlongfloatdoublecharboolean弓[用ByteShortIntegerLongFloatDoubleCharacterBooleam從jdkl.5+可以自動裝箱自動拆箱即基本類型引用類型(包裝類)引用類型(包裝類)基本類型Alt+inter可以出現(xiàn)可以選擇的getset方法Publicclassdemo4{Publicstaticvoidmain(String[]args){Arraylist<Integer>biglist=newArraylist<>();PublicstaticArraylist<Integer>getsmallList(Arraylist<Integer>biglist){Arraylist<Integer>smalllist=newArraylist<>();}}.字符串所有的“”中的額字符串都是String對象可以共享字符數(shù)組創(chuàng)立字符串Char[]chararray={'a','b','c'}Stringstr=newstring(charArray)System.out.print(str)字符串比擬Strl.equals(str2)內(nèi)容比擬字符串獲取相關(guān)方法Length()concat。拼接方法charAt()獲取索引位置值indexOF()參數(shù)字符串首次出現(xiàn)的位置字符串截取方法Substring(intindex)或者(intbeginintend)轉(zhuǎn)換方法分割方法R即lace()split(stringregex)按照字符串規(guī)那么分割.靜態(tài)static靜態(tài)只能訪問靜態(tài)成員方法可以訪問靜態(tài)8?繼承性extends共性抽取父類也是基類和超類子類也叫派生類子類可以擁有父類的內(nèi)容也可以有自己專有的內(nèi)容Publicclassfu{intnum=10}Publicclassziextendsfu{Intnum=20;Publicvoidmehtod(){Intnum=30;System.out.println(num);局部變量30System.out.println(this.num);本類的成員變量20System.out.println(super.num);父類的成員變量10})方法的重寫也叫覆蓋方法名稱一樣參數(shù)列表一樣創(chuàng)立的是子類對象就優(yōu)先使用子類的方法方法的重載是方法名稱一樣參數(shù)列表不一樣子類構(gòu)造方法中有隱含的super方法默認先調(diào)用父類的構(gòu)造方法.superthis關(guān)鍵字Super訪問父類的成員方法成員變量構(gòu)造方法This訪問本類的成員變量本類的另一個成員方法本類的另一個構(gòu)造方法.抽象類如果父類中的方法不確定如何實現(xiàn)就是一個抽象方法抽象類publicabstractclassanimal{抽象方法publicabstractvoideat();}.不能直接創(chuàng)立new抽象類對象.必須用一個子類繼承抽象父類.子類必須覆蓋重寫抽象父類中的所有抽象方法即子類去掉抽象方法的abstract然后補上方法體大括號如publicvoideat(){System.out.printin('吃魚')}.創(chuàng)立子類對象使用.如果不全部重方法的話可以將繼承的子類也定義為抽象類.接口公共規(guī)范標準interface引用數(shù)據(jù)類型Publicinterface接口名稱{}接口都能定義抽象方法例如publicabstractvoidmethod();Public和abstract可以省略必須有一個繼承的子類才能使用實現(xiàn)implements默認方法publicdefaultvoidmethod(){}默認方法會被實現(xiàn)類繼承下去靜態(tài)方法publicstaticvoidmethod(){}可以在實現(xiàn)類中通過接口名稱直接調(diào)用如MYinterface.method();私有方法如果接口中共用方法不讓實現(xiàn)類使用可以定義私有方法privatevoidmethod(){}接口中的常量必須賦值一旦賦值不能修改建議用完全大寫字母用publicstaticfinal修飾接口沒有靜態(tài)代碼塊和構(gòu)造方法可以實現(xiàn)多個接口例如PublicclassmyinterfaceimplementsinterfaceA,interfaceB{}.多態(tài)性父類publicclassFu{Publicvoidmethods(){System.out.println('父類'))}子類publicclassziextendsFu{Publicvoidmethods(){System.out.println('字類'))}實現(xiàn)類publicclassdemo{Publicstaticvoidmain(String[]args){Fuobj=newzi();Obj.method();父類名稱對象名=new子類名稱。;)接口名稱對象名=new實現(xiàn)類名稱0;}對象的向上轉(zhuǎn)型就是多態(tài)寫法父類名稱對象名=new子類名稱();對象的向下轉(zhuǎn)型子類名稱對象名=(子類名稱)父類對象Animalanimal=newCat();Catcat=(Cat)animal;.多線程并發(fā)交替進行同一時間段并行同時發(fā)生分時調(diào)度搶占式調(diào)度主線程:執(zhí)行主方法的線程創(chuàng)立多線程程序的第一種方法:創(chuàng)立thread子類步驟1,創(chuàng)立一個thread類的子類.在thread類的子類中重寫run方法設(shè)置線程任務(wù).創(chuàng)立thread類的子類對象.調(diào)用thread類方法start開啟新的線程執(zhí)行run方法多線程原理:Start方法重新開辟一個站空間執(zhí)行run方法Getname獲取線程名稱Sleep以指定的毫秒數(shù)暫停線程創(chuàng)立多線程程序的第二種方法:聲明實現(xiàn)runnable接口的實現(xiàn)類步驟1,創(chuàng)立一個runnable接口的實現(xiàn)類2.在實現(xiàn)類中重寫run方法設(shè)置線程任務(wù).3.創(chuàng)立一個runnable接口的實現(xiàn)類對象4,調(diào)用thread類對象構(gòu)造方法中傳遞runnable接口的實現(xiàn)類對象5.調(diào)用thread類方法start開啟新的線程執(zhí)行run方法匿名內(nèi)部類沒有名字寫在其他類內(nèi)部的類作用:把子類繼承父類,重寫父類的方法,創(chuàng)立子類對象合成一步把實現(xiàn)類實現(xiàn)接口,重寫接口方法創(chuàng)立實現(xiàn)類對象合成一步方法一:publicstaticvoidmain(String[]args){//newmyThread(),start();NewThread(){〃重寫runPublicvoidrun(){For(){sout())}}.start();〃接口Runnabler=newrunnable。;多態(tài)Runnabler=newrunnable(){Publicvoidrun(){For(){sout())}}}Newthread(r).start();多線程共享數(shù)據(jù)會產(chǎn)生平安問題比方一個影院的三個窗口同時賣票1-100解決平安問題方法一:同步代碼塊Synchronize(鎖對象){例如objectobj=newobject();肯出現(xiàn)問題的代碼(訪問了共享數(shù)據(jù)的代碼))注意:鎖對象可以任意但是必須保證多個線程使用的是同一個作用:把代碼塊鎖住只讓一個線程在同步代碼塊中執(zhí)行解決平安問題方法二:同步方法PublicSynchronizevoidpaytictet(){可能出現(xiàn)問題的代碼(訪問了共享數(shù)據(jù)的代碼)}解決平安問題方法三:thisPublicSynchronizevoidpaytictet(){Synchronize(this){可能出現(xiàn)問題的代碼(訪問了共享數(shù)據(jù)的代碼)}}解決平安問題方法四:靜態(tài)同步方法PublicstaticSynchronizevoidpaytictet(){可能出現(xiàn)問題的代碼(訪問了共享數(shù)據(jù)的代碼)}解決平安問題方法五:lock接口.成員位置創(chuàng)立一個ReentrantLock對象.可能出現(xiàn)問題的代碼前調(diào)用lock接口方法lock獲取鎖.可能出現(xiàn)問題的代碼后調(diào)用unlock接口方法lock釋放鎖如publicclassRunnableimplimplementsRunnable{Lockl=newReentrantLock();Publicvoidrun(){L.lock();可能出現(xiàn)問題的代碼塊L.unlock();}).線程狀態(tài)notify方法喚醒waitting無限等待狀態(tài)只有鎖對象才能調(diào)用notify和waitting方法notifyAII喚醒所有.線程池即容器用集合(Arrdylist,HdshSet,LInkedlistvthread>,HdshMap).集合list創(chuàng)立一個list集合對象多態(tài)List<String>list=newArraylist<>();Add()Add(index:3,element/love')Set(3,'A')替換元素Get()Arraylist數(shù)組集合查詢塊增刪慢Linkedlist鏈表集合查詢慢增刪塊Linkedlist<String>linked=newLinkedlist<>();Addfirst()Vector集合.set集合不包含重復(fù)元素沒有索引也沒有f?!秆h(huán)Hashset無序集合哈希表結(jié)構(gòu)查詢速度快不能遍歷循環(huán)只能用迭代器實現(xiàn)每個元素的輸出如:Set<interger>set=newhashset<>();Interator<integer>it=set.iterator();While(it.hasnext()){Integern=it.next();System.out.print(n);}或者for(integeri:set){System.out.print(i))哈希值hashcode()Hashset哈希集合Hashset<String>set=newHashset<>();必須重寫hashcode和equals才能保證元素唯一Hashset無序不允許重復(fù)Linkedhashset有序不允許重復(fù).可變參數(shù)方法的參數(shù)列表數(shù)據(jù)類型確定個數(shù)不確定時.collection集合工具類向一個集合中同時添加多個元素Arraylist<String>list=newArraylist<>();Collections.addAII(list/a7b7cz)Collections.shuffle打亂集合元素順序Collections.sort升序可以對類進行創(chuàng)立列表如Arraylist<Person>list=newArraylist<
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅精裝修意外免責(zé)合同
- 校園店鋪出租合同范本
- 供水管道安裝合同范本
- 規(guī)劃方案設(shè)計合同范本
- 起重機租賃服務(wù)合同范本
- 品牌推廣合作服務(wù)合同范本
- 2025年貴州貨運從業(yè)資格試題答案解析
- 2025年綿陽貨運資格證題庫下載安裝
- 陵園墓地居間服務(wù)合同投標
- 家具拆卸運輸合同模板
- 江蘇省鹽城市鹿鳴路初級中學(xué)2024-2025學(xué)年八年級上學(xué)期期末考試語文試題(含答案)
- 《反家庭暴力》課件
- 【物理】《跨學(xué)科實踐:制作簡易桿秤》(教學(xué)設(shè)計)-2024-2025學(xué)年人教版(2024)初中物理八年級下冊
- 新蘇教版一年級數(shù)學(xué)下冊第六單元《簡單的數(shù)量關(guān)系(一)》教案(共2課時)
- GA/T 2146-2024法庭科學(xué)涉火案件物證檢驗移動實驗室建設(shè)通用要求
- 2025年浙江省國土空間規(guī)劃研究院招聘歷年高頻重點提升(共500題)附帶答案詳解
- 2024-2025學(xué)年成都市石室聯(lián)中七年級上英語期末考試題(含答案)
- 2025年度服務(wù)外包合同:銀行呼叫中心服務(wù)外包協(xié)議3篇
- 7.1力教學(xué)課件-2024-2025學(xué)年初中物理人教版八年級下冊
- 【課件】跨學(xué)科實踐制作微型密度計++課件人教版物理八年級下冊
- 北師大版五年級數(shù)學(xué)下冊第4課時體積單位的換算課件
評論
0/150
提交評論