<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 閱讀(339) 評論(0)  編輯  收藏 所屬分類: 1.Java世界

    主站蜘蛛池模板: 亚洲精品乱码久久久久久按摩| xvideos亚洲永久网址| 亚洲成AV人片在线观看无| 青青免费在线视频| 免费一级毛片在播放视频| 亚洲AV成人一区二区三区观看| 成人免费无遮挡无码黄漫视频| 国产亚洲玖玖玖在线观看| 好男人www免费高清视频在线| ASS亚洲熟妇毛茸茸PICS| AV片在线观看免费| 欧美激情综合亚洲一二区| 国产无遮挡吃胸膜奶免费看视频| 精品久久久久久亚洲中文字幕 | 亚洲午夜电影在线观看高清| 黄色免费网站网址| 亚洲成在人线aⅴ免费毛片| 免费国产综合视频在线看| 无遮挡a级毛片免费看| 亚洲日韩小电影在线观看| 大地资源在线资源免费观看| 亚洲无删减国产精品一区| xxxx日本免费| 色噜噜噜噜亚洲第一| 国产亚洲美女精品久久久2020 | 九九精品免费视频| 朝桐光亚洲专区在线中文字幕| 亚洲性久久久影院| 久久爰www免费人成| 色老板亚洲视频免在线观| 亚洲?V乱码久久精品蜜桃 | 久久久久久夜精品精品免费啦| 亚洲日产2021三区| 四虎永久在线精品视频免费观看| 亚洲免费日韩无码系列| 1区1区3区4区产品亚洲| 国产aa免费视频| 51在线视频免费观看视频| 精品一区二区三区免费毛片| 亚洲国产精品久久久久网站| 扒开双腿猛进入爽爽免费视频|