資源描述:
《java編程資料new》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、第一部分Java精髓1991年,SunMicrosystems公司開始研究一種新的計(jì)算機(jī)語言,這種語言最后撼動了傳統(tǒng)編程的基礎(chǔ)。起初,這種語言被命名為Oak,到1995年正式命名為Java。Java在兩個方面改變了編程的過程。第一,Java集成了有利于編制Internet程序的特性。第二,Java發(fā)展了計(jì)算機(jī)語言的精髓。因此,Java的重要性體現(xiàn)在兩點(diǎn):對Internet的內(nèi)嵌支持和對計(jì)算機(jī)語言發(fā)展的推動。這兩點(diǎn)中的任何一點(diǎn)都足以使Java成為一種出色的語言;但是只有將這兩點(diǎn)成功地結(jié)合起來,Java才能成為一種偉大的
2、語言,才能確定它在計(jì)算機(jī)歷史中的地位。簡單數(shù)據(jù)類型和對象:完美的平衡設(shè)計(jì)一種面向?qū)ο笳Z言所面臨的最大挑戰(zhàn),就是如何平衡對象和簡單數(shù)據(jù)類型之間的抉擇。從純理論的觀點(diǎn)來看,每種數(shù)據(jù)類型都應(yīng)該是一個對象,并且都應(yīng)該從一個共同的父對象派生而來。這就使得所有數(shù)據(jù)類型以相同的基本模式運(yùn)作,共享一個公共的基類屬性集合。現(xiàn)在的問題在于,如果將簡單數(shù)據(jù)類型(如int和double)作為對象處理,那么對象機(jī)制所引起的額外開銷會導(dǎo)致性能(performace)的下降。由于簡單數(shù)據(jù)類型通常用于循環(huán)控制和條件語句,所以這些額外開銷將帶來廣泛的
3、負(fù)面影響。訣竅就是如何在“一切都是對象”的理想和“性能衡量”的現(xiàn)實(shí)之間找到正確的平衡點(diǎn)?! ava非常巧妙地解決了對象與簡單數(shù)據(jù)類型之間的問題。首先,Java定義了8種簡單類型:byte、short、int、long、char、float、double和boolean。這些類型能夠直接轉(zhuǎn)換為二進(jìn)制代碼。因此,CPU可以直接處理int類型的變量,而無需任何額外開銷。在Java中,處理簡單數(shù)據(jù)類型和其他語言一樣快速高效。因此,由int型變量所控制的for循環(huán)可以高速運(yùn)行,而不受任何對象化所帶來的負(fù)面影響?! 〕诉@些簡
4、單數(shù)據(jù)類型,Java中的其他數(shù)據(jù)類型都從一個共同超類(Object類)派生而來。因此,所有這些數(shù)據(jù)類型都共享從父類繼承而來的方法和屬性集。例如,所有對象都有toString()方法,因?yàn)閠oString()是父類Object中定義的方法?! ∮捎诤唵螖?shù)據(jù)類型不是對象,因此Java可自由地以略有不同的方式處理對象和非對象。這就是Java的真正精髓所在。在Java中,所有對象都通過引用訪問,而非直接訪問;只有簡單數(shù)據(jù)類型才可以直接訪問。因此,Java程序絕對不會直接操作一個對象。這種策略可以帶來很多好處,最直接的好處就是
5、能夠高效地實(shí)現(xiàn)垃圾回收。因?yàn)樗袑ο蠖纪ㄟ^引用訪問:當(dāng)一個對象沒有被引用時(shí),它將被回收。另一個好處是,每個Object類型的指針可以引用系統(tǒng)中的任何對象?! ‘?dāng)然,通過引用訪問對象將產(chǎn)生額外開銷。因?yàn)橐粋€引用實(shí)際上是一個地址(即指針)。于是對每個對象的訪問不是直接進(jìn)行的,而是通過地址間接完成的。盡管現(xiàn)代CPU可以高效地處理間接訪問,但是間接訪問總是不如直接處理數(shù)據(jù)本身快,簡單數(shù)據(jù)類型即是通過直接方式進(jìn)行的?! ”M管簡單數(shù)據(jù)類型的處理非常高效,但是有些時(shí)候仍然需要使用跟某個簡單類型等價(jià)的對象。例如在運(yùn)行時(shí)創(chuàng)建一個整型鏈
6、表,并在不再使用時(shí)將其回收(垃圾回收)。為了處理此類情況,Java為簡單類型(如Integer和Double)定義了包裝器(wrapper)。包裝器使得簡單類型在必要時(shí)可參與到對象層次的操作中來。Java關(guān)于對象和簡單數(shù)據(jù)類型的平衡問題。它支持編寫高效程序,同時(shí)又完美地解決了允許實(shí)現(xiàn)對象模型,而不用擔(dān)心對簡單數(shù)據(jù)類型的性能會產(chǎn)生負(fù)面影響。通過垃圾回收實(shí)現(xiàn)內(nèi)存管理垃圾回收作為一種內(nèi)存管理技術(shù)已經(jīng)存在了很長時(shí)間,但是Java使它煥發(fā)出嶄新的活力。在C++等語言中,內(nèi)存必須人工管理,程序員必須顯式地釋放不再使用的對象。這是
7、問題產(chǎn)生的根源,因?yàn)橥涐尫挪辉偈褂玫馁Y源,或者釋放了正在使用的資源都是很常見的事情。Java代替程序員完成了這些工作,從而防止了此類問題的發(fā)生。在Java中,所有的對象都是通過引用訪問的,這樣,當(dāng)垃圾回收器發(fā)現(xiàn)一個沒有引用的對象時(shí),就知道該對象已經(jīng)不被使用,并且可以回收了。如果Java允許對象的直接訪問(與簡單數(shù)據(jù)類型的訪問方式類似),那么這種有效的垃圾回收方法將無法實(shí)現(xiàn)?! ava的垃圾回收策略在普遍意義上反映了Java的理念。Java設(shè)計(jì)人員花費(fèi)了大量的精力,來防止其他編程語言經(jīng)常出現(xiàn)的典型問題,例如程序員經(jīng)
8、常忘記釋放資源,或者錯誤地釋放正在使用的資源。因此,使用垃圾回收策略有效地避免了此類問題的發(fā)生。完美的簡單多線程模型Java的設(shè)計(jì)者所提供的編程特性,包括對多線程多任務(wù)的語言級支持。多任務(wù)具有兩種類型:基于進(jìn)程的多任務(wù)和基于線程的多任務(wù)。在基于進(jìn)程的多任務(wù)中,最小的可調(diào)度單元是進(jìn)程。進(jìn)程實(shí)際上就是正在執(zhí)行的一個程序。因此,基于進(jìn)程的多任務(wù)就是允