- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
*指定運算不會複製資料*指定運算不會複製資料因此,接下來透過b對陣列的操作,就等於是對a所指陣列的操作,而現在a和b根本就是指向同一個陣列,所以更改的是同一個陣列。事實上,對於一個陣列變數來說,也可以隨時變換整個陣列,例如:*指定運算不會複製資料*指定運算不會複製資料*指定運算不會複製資料其中第8~10行就重新幫a配置陣列,這個新的陣列和一開始所配置的陣列大小也不一樣,完全是新的陣列。事實上,這並非重新配置陣列,而只是捨棄了原本的陣列,再配置一個新的陣列而已。*重新配置陣列的注意事項在重新配置陣列的時候,有一點要注意的是,不能使用同時配置與設定元素內容的方式,因為這種方式只能用在宣告陣列變數的時候。也就是說,您不能撰寫如下的敘述:因為這並不是一個宣告陣列變數的敘述。*資源回收系統(GarbageCollectionSystem)瞭解了上述參照型別的特色後,您可能已經想到了一個問題,若不斷的配置陣列,也就是不斷的索取組合櫃,會不會有組合櫃全部被佔用,沒有閒置的組合櫃可用的情況?為了避免這樣的狀況,Java設計了一個特別的機制,可以將已經閒置不再需要使用的組合櫃回收,以便供後續需要時使用。這個機制就稱為資源回收系統。*參照計數(ReferenceCount)為了讓資源回收系統能夠運作,就必須要有一套監控組合櫃使用狀況的機制,這樣才能在發現有閒置的組合櫃時,自動將之回收。Java的作法很簡單,它會監控對應於每一個組合櫃的號碼牌個數,以剛剛看過的ArrayAssignment.java程式為例:*參照計數(ReferenceCount)*參照計數(ReferenceCount)當程式執行完第5行後,變數a和b都擁有對應同一個陣列的號碼牌,也就是該陣列目前已經發出了2個號碼牌。這個數目稱為參照計數(ReferenceCount),因為它記錄了目前有多少變數還握有同一個組合櫃的號碼牌,也就是還有多少變數可能會用到這個組合櫃。*參照計數(ReferenceCount)有了參照計數後,資源回收系統就可以在某個組合櫃的參照計數為0時,認定不再有需要使用該組合櫃的可能,因而回收該組合櫃。那麼參照計數在甚麼狀況下才會減少呢?這可以分成3種狀況:*參照計數(ReferenceCount)參照型別的變數自行歸還號碼牌:只要將參照型別的變數指定為字面常數null,亦即:就等於是告訴資源回收系統該變數不再需要使用所握有的號碼牌對應的組合櫃,這時該組合櫃的參照計數就會減1。*參照計數(ReferenceCount)給予參照型別變數其他組合櫃的號碼牌:參照型別變數只能握有一個號碼牌,如果指派給它另一個組合櫃的號碼牌,像是重新配置陣列,它就必須歸還原本的號碼牌,因此對應組合櫃的參照計數也會減1。例如:*參照計數(ReferenceCount)參照型別的變數離開有效範圍,自動失效時。有關這一點,會在下一章說明。有了這樣的規則,資源回收系統就可以知道哪些組合櫃還可能會再用到,而哪一些組合櫃不可能會再用到了。*回收的時機一旦發現有閒置的組合櫃之後,資源回收系統並不會立即進行回收的動作,而是先將這個組合櫃的號碼記錄下來。這是因為回收組合櫃的工作並不單單只是將其收回,可能還必須將組合櫃拆開,或是與其他的組合櫃集中放置等搬移動作,這些動作都必須耗費時間。如果資源回收系統在發現閒置的組合櫃的同時便立即回收,就可能會影響到程式正在執行的重要工作。*回收的時機因此,資源回收系統會先將要回收的組合櫃記錄下來,等到發現您的程式似乎沒有在執行繁重的工作,像是等待網路連線的對方回應時,才進行回收的工作。透過這樣的方式,資源回收系統不但可以自動幫您將閒置的資源回收,而且也不會影響到程式的執行效率。*7-5命令列參數:argv陣列雖然到了這一章才介紹陣列,但事實上之前所展示過的每一個程式,都已經使用過陣列了。如果您眼尖的話,一定會注意到每一個程式中的main()方法在main之後都跟著一對小括號,而在小括號中有String[]argv字樣:*命令列參數:argv陣列根據這一章所學,這個argv無疑是指向陣列的變數,而且其元素是用來儲存String型別的資料,也就是字串。但是這個argv有甚麼作用?又是從何而來呢?在這一節中就要為您詳細的說明。*argv與main()方法在第2章曾經說
原创力文档


文档评论(0)