欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Java數組學(xué)習心得
我以前對C++比較熟悉,所以就想當然將C++中的數組與Java中的數組畫(huà)上了等號。讀過(guò)《TIJ》之后我發(fā)現并不是這么回事,所以,完全應該重新認識Java中的數組。這篇文章不是對Java中數組的全面介紹,只是我的一些心得。(有些內容轉引自《TIJ》)

概論:
相對于C++中的數組,Java中的數組已經(jīng)有了很大的改進(jìn)。首先,Java中的數組是對象,這就意味著(zhù)與C++中的數組的根本不同,相反,Java中的數組與C++中的STL或Java中的容器類(lèi)反而更相像一些(只是作為對象,它的方法要比STL中的容器類(lèi)或者Collection類(lèi)少很多)。另外,Java中有支持數組的一套算法,就像STL中的Algorithm與Java中的Collections類(lèi)中的靜態(tài)方法一樣。當然,嚴格的說(shuō),這些算法也許并不是STL和Collections類(lèi)所強調的通用算法;但是它們是包含在標準庫中的高效的算法,對于程序員來(lái)說(shuō),這些算法可以不加修改的作用于各種不同類(lèi)型的數組,也算是某種程度上的通用算法了。

下面主要從數組作為對象以及通用算法兩部分來(lái)討論Java數組區別于C++數組的特性。

1. Java中的數組作為對象帶來(lái)的好處
1.1 越界檢查

1.2 length field:與傳統的C++中的數組相比,length字段可以方便的得到數組的大??;但要注意,僅僅可以得到數組的大小,不能得到數組中實(shí)際包含多少個(gè)元素,因為length 只會(huì )告訴我們最多可將多少元素置入那個(gè)數組。

1.3 初始化:對象數組在創(chuàng )建之初會(huì )自動(dòng)初始化成null,由原始數據類(lèi)型構成的數組會(huì )自動(dòng)初始化成零(針對數值類(lèi)型),(Char)0 (針對字符類(lèi)型)或者false (針對布爾類(lèi)型)。

1.4 數組作為返回值:首先,既然數組是對象,那么就可以把這個(gè)對象作為返回值;而且,不必擔心那個(gè)數組的是否可用只要需要它就會(huì )自動(dòng)存在而且垃圾收集器會(huì )在我們完成后自動(dòng)將其清除

2. 通用算法
2.1 在java.util 中的Arrays 數組類(lèi)容納著(zhù)一系列靜態(tài)方法可簡(jiǎn)化我們對數組的操作,總共有四個(gè)函數。equals()用于比較兩個(gè)數組是否相等、fill()可將一個(gè)值填入數組、sort()可對數組排序、而binarySearch()用于在排好序的數組中查找一個(gè)元素。所有這些方法都已為全部原始數據類(lèi)型及對象重載使用。除此以外還有一個(gè)asList()方法可用它獲取任意數組然后把數組轉變成一個(gè)List 容器。

2.2 sort和binarySearch的使用:在Java 2 中有兩個(gè)辦法可提供比較功能。第一個(gè)辦法是用自然比較方法,這是通過(guò)實(shí)現java.lang.Comparable 接口來(lái)實(shí)現。Java 2 提供的第二個(gè)辦法來(lái)進(jìn)行對象的比較,單獨創(chuàng )建一個(gè)類(lèi)實(shí)現名為Comparator 的一個(gè)接口。接口提供了兩個(gè)方法分別是compare()和equals() 。不過(guò)除非考慮到一些特殊的性能方面的因素,否則我們用不著(zhù)實(shí)現equals() ,因為每次創(chuàng )建一個(gè)類(lèi)的時(shí)候它都會(huì )默認從Object 繼承,而Object 已經(jīng)有了一個(gè)equals()。Comparator可以作為sort和binarySearch方法的參數。


3. 需要注意的問(wèn)題
3.1 Java中的數組中既可以存儲基本的值類(lèi)型,也可以存儲對象。對象數組和原始數據類(lèi)型數組在使用方法上幾乎是完全一致的,唯一的差別在于對象數組容納的是引用而原始數據類(lèi)型數組容納的是具體的數值。這一點(diǎn)要特別注意,在討論關(guān)于數組的問(wèn)題時(shí),一定要先確定數組中存儲的是基本值類(lèi)型還是對象。特別是在調試程序時(shí),要注意這方面。
例如:
Arrays提供了一個(gè)fill()方法將一個(gè)值復制到一個(gè)位置,如果是對象數組則將引用復制到每一個(gè)位置。
Java 標準庫提供了一個(gè)靜態(tài)方法名為System.arraycopy() 專(zhuān)門(mén)用于數組的復制它復制數組的速度比自己親自動(dòng)手寫(xiě)一個(gè)for 循環(huán)來(lái)復制快得多System.arraycopy()已進(jìn)行了重載可對所有類(lèi)型進(jìn)行控制。無(wú)論原始數據類(lèi)型數組還是對象數組我們都可對它們進(jìn)行復制。但是假如復制的對象數組,那么真正復制的只是引用對象本身可不會(huì )復制。

3.2 為什么使用數組而不使用ArrayList等容器類(lèi)?
效率和類(lèi)型。
3.2.1 效率:
對于Java 來(lái)說(shuō)要想保存和隨機訪(fǎng)問(wèn)一系列對象實(shí)際是對象引用效率最高的方法莫過(guò)于數組。
3.2.2 類(lèi)型:
Java標準庫中的容器類(lèi)都把對象當作沒(méi)有具體類(lèi)型那樣對待,換言之它們將其當作Object 類(lèi)型處理。Object 類(lèi)型是Java 中所有類(lèi)的根類(lèi),從某種角度看這種處理方法是非常合理的,我們只需構建一個(gè)容器然后所有Java 對象都可進(jìn)入那個(gè)容器。原始數據類(lèi)型除外,可用Java 的基類(lèi)型封裝器類(lèi)將其作為常數置入容器或自建一個(gè)類(lèi)把它們封裝到里面當作可變值進(jìn)行對待。這再一次體現出數組相較于普通容器的優(yōu)越性,創(chuàng )建一個(gè)數組時(shí)可讓它容納一種特定的類(lèi)型。這意味著(zhù)可進(jìn)行編譯時(shí)間的類(lèi)型檢查防范自己設置了錯誤的類(lèi)型或者錯誤地提取了一種類(lèi)型,而不是運行時(shí)的Exception。



總結:在你想容納一組對象的時(shí)候第一個(gè)也是最有效的一個(gè)選擇便是數組。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
三十分鐘掌握STL
JAVA中數組和容器的區別
Java中Array與ArrayList的主要區別
Java容器類(lèi)詳解-Collection接口
Java語(yǔ)言與C 語(yǔ)言的差異總結
JAVA算法競賽輸入輸出
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久