資源描述:
《黑馬程序員_黑馬筆記第8蛋:java基礎(chǔ)加強》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、看完張孝祥老師的java基礎(chǔ)加強視頻,覺得有很多不錯的地方應該記錄一下,以便FI后復習。聽說張老師年前不幸英年早逝,作為張老師的視頻學生,也表示我們從此少了一位負責、熱情的好老師。作為學牛,應該拿出色的學習成果來回報老師了。實質(zhì)上基礎(chǔ)加強就是JDK1.5的新特性的總結(jié),對于JDK1.6的我以后的日記會記錄。一、從基本數(shù)據(jù)的白動裝箱,來說一說亨元模式看到張老師視頻的11集,說道了這么一段代碼:publicclassAutoBox{publicstaticvoidmain(String[]args){Integeri1=13;lntegeri2=13;Sy
2、stem.out.println(il==i2);}}當然將13這個int基礎(chǔ)類型的數(shù)據(jù)賦值給Integer基礎(chǔ)類型包裝類,這個過程進行的自動裝箱。這是JDK1.5的新特性(自動裝箱和拆箱)額,這個白然明白,一開始覺得既然白動裝箱,當然要在堆內(nèi)存'I1new兩個對象了,來裝兩個13,但是心里也感覺有點浪費空I'可,后來打印System.out.println(i1==i2);結(jié)果是true,還自認為他們比的是值不是地址,應該重寫了equals方法,但是用的是==不是equals方法。老師說是他們放在緩沖池屮,不會創(chuàng)建兩個不同的對象,前提條件是:-128
3、到127之間。當il=135,i2=135時,才會有兩個不同的對象,是因為不在-128到127Z間,緩沖池里不存儲。這就是所謂的享元模式。也就是說javal.5將小的整數(shù)-128到127之間采用亨元模式來存儲到緩沖池,對于大的整數(shù)則不采用。(flyweight享元模式)二、說一說枚舉類型(JDK1.5新特性)在jdkl.5Z前,沒有枚舉類型,想實現(xiàn)枚舉,用的是抽彖類實現(xiàn)。packagecom.heima;publicclassEnumTest{publicstaticvoidmain(Stringl)args){System.out.println(星
4、期天的下一天是:+WeekDay.SUN?nextDay().toString());System.out.println(?期天的下一天是:+WeekDay.SUN.nextDay());}}/***沒有枚舉Z前,在jdkl.5Z前,用的是抽象類。*@authorming**/abstractclassWeekDay{privateWeekDayO{}〃使用匿名內(nèi)部類,new捕彖類publicstaticfinalWeekDaySUN=newWeekDayO{@OverridepublicWeekDaynextDayO{returnMON;}};pu
5、blicstaticfinalWeekDayMON=newWeekDayO{@OverridepublicWeekDaynextDayO{returnSUN;)};publicabstractWeekDaynextDayO;/***覆寫toString()方法,為了方便打印輸出*/publicStringtoStringO{returnthis==SUN?SUN:MON;}}輸出結(jié)果:星期天的下一天是:MON星期天的下一天是:MON注:采用抽象方法代替ifelse,改寫為一個個獨立的類。當然nextDay要是抽彖方法?,F(xiàn)在用jdk1.5來使用枚舉類吧。
6、寫了一個最復雜的enumopackagecom?heima;publicclassEnumTest2{publicstaticvoidmain(String[]args){WcckDay2wd=WeekDay2?FRI;Sys(em.ou(.println(wd?name());System.out.printIn(wd.ordinal());System.out.println(WeekDay2.valueOf(WEN));System.out.println(WeekDay2.valueOf(WEN).toString());System.out.
7、println(WeekDay2.values().length);System.out?println();TraficLamptf=TraficLamp?GREEN;Systcm.out.print】n(tf.namc());Systcm.out?println(tf?ncxtLamp());[publicenumWeekDay2{SUN(l),MON,TUE,WEN,THI,FRI,SAT;privateWeekDay2(){System.out.println(firstconstructor);}privateWeekDay2(intday)
8、{System.out.printin(secondconstructor);}}/***最復