<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java, Only Java!

    統計

    留言簿(20)

    積分與排名

    好友空間

    文檔技巧

    閱讀排行榜

    評論排行榜

    《Java大學教程》—第24章 Java的背景

    本章主要介紹的是Java的背景知識,通過了解歷史知道Java與其他語言的區別,以便更好選擇在什么場景下使用Java。

    24.2    語言的尺寸
    Java語言短小、緊湊,以C++為基礎,放棄了一些特定的語言特征(指針和多繼承)
    注:需要關注的是為什么放棄這兩個特征,有沒有替代方案,各自的優缺點。

    24.2.1    指針(pointer)
    指針是一種變量,并且變量中包含了某個存儲器地址。
    Java不允許使用指針,因為指針指向的是具體的物理地址,直接操縱物理地址中的數據,容易使程序出現不可預料的問題。
    Java通過創建引用()來實現對地址的訪問。通過引用也可以把地址作為變量傳送。

    24.2.2    多繼承(multiple inheritance)
    多繼承允許一個類繼承于多個超類。
    Java不允許多繼承:因為多繼承使用不多,且編程復雜,容易出錯。
    Java允許繼承一個基類,實現多個接口的方式實現多繼承。

    24.3    語言的可靠性
    24.3.1    別名(alias)
    別名會導致不同的對象變量指向同樣的對象。
    因為對象變量中存儲的對象地址相同,從而出現兩個修改同一對象數據的入口,容易造成混淆。
    為此Java提供了兩種拷貝機制:深拷貝(對象的數據的拷貝)和淺拷貝(對象的引用的拷貝)。
    深拷貝可以保護原始對象不受影響,但是需要消耗時間和空間,用于保護數據安全的領域使用。利用clone方法。
    淺拷貝提供了原始對象的地址,不需要消耗過多的時間和空間,但是必須小心的使用,以免造成不可預料的問題。利用別名機制。

    24.3.2    重寫clone方法
    protected的方法可以被重寫為public的方法,但是public的方法不可以重寫為protected方法。
    注:因為已經在父類已經是public的方法,就算子類重寫為protected方法,那么訪問者依然可以通過父類實現訪問,所以不容許public方法重寫成protected方法。

    24.3.3    不變對象
    如果對象中不存在變更它們狀態的方法,則對象稱為不變對象。
    如果對象是不可變的,則不必擔心創建對象的別名會造成不可預料的問題。

    24.3.4    使用Object類的clone方法
    Object類的clone方法復制了分配給對象屬性的存儲器的內容,也稱為按位拷貝(bitwise copy)。即完全復制了原始類型(primitive type)的屬性的內容,并且復制了屬性的引用。
    *    如果類的屬性都是基本類型的,則重載clone方法只需要調用Object類的clone方法;
    *    如果類的屬性有對象類型的,并且這些對象都是不可變的,則重載clone方法只需要調用Object類的clone方法。
    *    如果類的屬性包含非不可變對象,則無法利用Object類的clone方法進行復制,必須自己編寫代碼來實現clone方法。

    如果需要使用Object類的clone方法,需要標識類實現了Cloneable接口,這個接口也是個標識接口,沒有包含任何方法。

    24.3.5    垃圾收集
    Java使用異常處理技術來監視內存耗盡問題,并且可以編寫代碼來確保程序正常地終止。
    Java語言具有一種內嵌的垃圾收集功能,該功能能夠釋放未被使用的內存。通過搜索程序所使用的內存空間,釋放不再被使用的內存。

    自測題:
    1.    指針與引用的區別:
    指針保存了地址,并且可以通過代碼修改和操縱這個地址的數據。
    引用保存了地址,但是這個地址不能通過代碼修改,也不能隨便改變訪問的類型,例如:不能按字節訪問地址中的信息。

    2.    多繼承:
    多繼承允許一個類繼承于多個超類。
    Java不允許多繼承:因為多繼承使用不多,且編程復雜,容易出錯。
    Java允許繼承一個基類,實現多個接口的方式實現多繼承。

    3.    Critical.java

    a)    因為Critical對象存在變更它們狀態的方法,所以是可變對象。

    b)    CriticalTest.java

    c)    Critical.java

    d)    CriticalTest.java

    4.
    a)    為什么方法返回的都是別名:方便調用的方法修改里面的數據,對于不可變對象也提高傳送數據的效率。
    b)    為什么別名可能有危險:因為調用方法的代碼可能會修改原始數據,造成不可意料的數據錯誤。
    c)    如何避免別名:創建clone方法,返回的對象都采用深拷貝。

    5.    垃圾收集功能的優點和缺點:
    優點:簡化程序員的工作,避免出現內存泄漏或者內存耗盡的問題。
    缺點:降低代碼執行的速度,對于實時應用會突然出現響應不及時的問題。

    編程練習:代碼附件
        Critical.java    CriticalTest.java

    posted on 2016-10-06 14:31 zYx.Tom 閱讀(334) 評論(0)  編輯  收藏 所屬分類: 1.Java世界

    主站蜘蛛池模板: 亚洲v国产v天堂a无码久久| 国产精品白浆在线观看免费| 国产精品国产亚洲区艳妇糸列短篇| 亚洲三级视频在线观看| 亚洲国产成人资源在线软件 | 日本免费一区二区三区| 免费一级不卡毛片| 99久在线国内在线播放免费观看| 精品一区二区三区免费毛片爱| 久久99国产综合精品免费| 黄网站色在线视频免费观看| 黄色片在线免费观看| 最近2019中文免费字幕| 国产真人无遮挡作爱免费视频 | 免费无码黄网站在线看| 成人无码WWW免费视频| 精品无码人妻一区二区免费蜜桃 | 中文字幕av免费专区| 在线观看特色大片免费网站| 久久久久成人片免费观看蜜芽| 美女内射无套日韩免费播放| 1024免费福利永久观看网站| 女人张开腿等男人桶免费视频| 国产女高清在线看免费观看| 国产成人毛片亚洲精品| 午夜亚洲www湿好大| 亚洲乱码日产精品BD在线观看| 亚洲欧美日韩中文无线码 | 亚洲一区二区影视| 亚洲AV日韩AV永久无码色欲| 国产免费人成视频尤勿视频| 香港a毛片免费观看 | 99re这里有免费视频精品| 永久免费av无码不卡在线观看 | 无码av免费网站| 成人免费视频88| 亚洲综合久久夜AV | 久久久无码精品亚洲日韩京东传媒| 亚洲六月丁香婷婷综合| 一级成人毛片免费观看| 最近中文字幕大全免费视频 |