更新時間:2020-02-27 11:52:19 來源:動力節(jié)點 瀏覽3009次
假定我們現(xiàn)在想寫一個方法,同時不希望它僅僅返回一樣東西,而是想返回一系列東西。此時,象C和C++這樣的語言會使問題復雜化,因為我們不能返回一個數(shù)組,只能返回指向數(shù)組的一個指針。這樣就非常麻煩,因為很難控制數(shù)組的“存在時間”,它很容易造成內(nèi)存“漏洞”的出現(xiàn)。
Java采用的是類似的方法,但我們能“返回一個數(shù)組”。當然,此時返回的實際仍是指向數(shù)組的指針。但在Java里,我們永遠不必擔心那個數(shù)組的是否可用——只要需要,它就會自動存在。而且垃圾收集器會在我們完成后自動將其清除。
flavorSet()方法創(chuàng)建了一個名為results的String數(shù)組。該數(shù)組的大小為n——具體數(shù)值取決于我們傳遞給方法的自變量。隨后,它從數(shù)組flav里隨機挑選一些“香料”(Flavor),并將它們置入results里,并最終返回results。返回數(shù)組與返回其他任何對象沒什么區(qū)別——最終返回的都是一個句柄。至于數(shù)組到底是在flavorSet()里創(chuàng)建的,還是在其他什么地方創(chuàng)建的,這個問題并不重要,因為反正返回的僅是一個句柄。一旦我們的操作完成,垃圾收集器會自動關照數(shù)組的清除工作。而且只要我們需要數(shù)組,它就會乖乖地聽候調(diào)遣。
另一方面,注意當flavorSet()隨機挑選香料的時候,它需要保證以前出現(xiàn)過的一次隨機選擇不會再次出現(xiàn)。為達到這個目的,它使用了一個無限while循環(huán),不斷地作出隨機選擇,直到發(fā)現(xiàn)未在picks數(shù)組里出現(xiàn)過的一個元素為止(當然,也可以進行字串比較,檢查隨機選擇是否在results數(shù)組里出現(xiàn)過,但字串比較的效率比較低)。若成功,就添加這個元素,并中斷循環(huán)(break),再查找下一個(i值會遞增)。但假若t是一個已在picks里出現(xiàn)過的數(shù)組,就用標簽式的continue往回跳兩級,強制選擇一個新t。用一個調(diào)試程序可以很清楚地看到這個過程。
main()能顯示出20個完整的香料集合,所以我們看到flavorSet()每次都用一個隨機順序選擇香料。為體會這一點,最簡單的方法就是將輸出重導向進入一個文件,然后直接觀看這個文件的內(nèi)容。
以上就是動力節(jié)點Java培訓機構(gòu)小編介紹的“Java基礎教程:Java返回數(shù)組”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。