總是感興趣爲什麼Array.Sort()和Array.IndexOf()方法靜態和相似ArrayList.Sort()和ArrayList.IndexOf()被設計爲成員方法。謝謝你的任何想法。爲什麼Array.Sort()和Array.IndexOf()方法是靜態的?
5
A
回答
5
在我看來,Array類基本上是我們在程序中使用[]聲明的固定大小數組的類表示(您可以像int那樣繪製類比(它具有類System.Int32的類(結構)表示)。
另外Array類不包含任何實例變量中的實際數組數據,但它只提供靜態實用程序函數,可用於在聲明的固定大小數組中進行排序和搜索。
另一方面,ArrayList是一個集合類,它提供了動態大小的數組實現,它有它自己的數據結構來包含數據。因此,所述方法是實例方法,以便它們可以處理該特定實例的數據。
3
像ArrayList
這樣的集合類封裝了某種內部存儲(大概是根據需要調整大小的數組,但也可能是鏈接列表或其他實現)。像IndexOf
和Sort
這樣的方法需要訪問底層的私有存儲才能高效,所以它們必須是instace方法。
另一方面Array
沒有封裝,有公共訪問直接存儲。 Array.IndexOf
和Array.Sort
方法不需要對數組數據進行任何特殊訪問,所以它們也可能是靜態metods。
相關問題
- 1. 爲什麼說方法不是靜態時它是靜態的?
- 2. 爲什麼getAppProperty()不是靜態方法?
- 3. 什麼是靜態方法和變量?
- 4. 爲什麼不是每種方法都是靜態方法?
- 5. 靜態方法和非靜態方法有什麼區別?
- 6. 什麼是C#中的「靜態方法」?
- 7. 爲什麼接口方法不能是「靜態」和「最終」?
- 8. 什麼是靜態方法同步嗎?
- 9. 非靜態類中靜態方法的要點是什麼?
- 10. 爲什麼CustomFieldSerializer需要靜態方法?
- 11. 爲什麼可以調用非靜態類的靜態方法?
- 12. 非靜態類中的靜態方法和靜態類中的靜態方法有什麼區別?
- 13. 爲什麼程序的主要方法是靜態的?
- 14. 爲什麼非靜態方法可以訪問靜態字段?
- 15. 公共靜態,公共和靜態方法有什麼區別?
- 16. 爲什麼遞歸方法通常在Java中是靜態的?
- 17. 爲什麼ClassInitialize方法必須是靜態的?
- 18. 爲什麼withLatest從RxJS方法不是靜態的?
- 19. 爲什麼主要方法需要是靜態的?
- 20. 爲什麼SetTarget是一個Storyboard的靜態方法
- 21. 這個方法爲什麼是靜態的?
- 22. 什麼是主題類的靜態和本機方法
- 23. 靜態結構方法和靜態類方法有什麼區別?
- 24. 爲什麼靜態類不能有非靜態方法和變量?
- 25. 具有靜態方法的靜態類和具有靜態方法的常規類之間有什麼不同?
- 26. 爲什麼setFollowRedirects(布爾自動)是一個靜態方法HttpURLConnection
- 27. 爲什麼JavaMail Transport.send()是一個靜態方法?
- 28. 爲什麼toString()不能是一個靜態方法?
- 29. 爲什麼私有靜態方法是使用任務
- 30. 爲什麼使用單例而不是靜態方法?
它們也可能是成員方法,但是,對嗎? int也可以重命名爲整數,因爲它對非程序員來說更具可讀性,對吧? – strager 2009-01-05 19:11:33