Java中的數(shù)組

數(shù)組的特殊性

數(shù)組與其他種類的容器之間的區(qū)別有三方面:效率争剿、類型和保存基本類型的能力羽利。在Java中,數(shù)組是一種效率最高的存儲和隨機訪問對象引用序列的方式麦到,數(shù)組就是一個簡單的線性序列虹茶,這使得元素訪問非常迅速,但是為這種速度付出的代價就是數(shù)組對象的大小被固定隅要,并且在其生命周期中不可改變蝴罪。
數(shù)組之所以優(yōu)于泛型之前的容器,就是因為你可以創(chuàng)建一個數(shù)組去持有某種具體的類型步清。這意味著你可以通過編譯期檢查要门,來防止插入錯誤類型和抽取不正當?shù)念愋汀?/p>

使用數(shù)組,返回一個數(shù)組


import java.util.*;

public class IceCream {
    
    private static Random rand = new Random(47);
    static final String[] FLAVORS = {
        "Chocolate", "Strawberry","Mint chip","Rum Raisin","Mud Pie","Mocha","test1","test2","test3"
    };
    
    public static String[] flavorSet(int n){
        if(n> FLAVORS.length){
            throw new IllegalArgumentException("Set too big");
        }
        
        String[] results = new String[n];
        boolean[] picked = new boolean[FLAVORS.length];
        for(int i = 0; i < n; i++){
            int t;
            do{
                t = rand.nextInt(FLAVORS.length);
            }while(picked[t]);
            results[i] = FLAVORS[t];
            picked[t] = true;
        }
        return results;
    }
    
    public static void main(String[] args) {
        for (int i = 0; i < 7; i++) {
            System.out.println(Arrays.toString(flavorSet(3)));
        }
    }   
}

數(shù)組的協(xié)變

下面的例子來源于Java編程思想

class Fruit {}
class Apple extends Fruit {}
class Jonathan extends Apple {}
class Orange extends Fruit {}
public class CovariantArrays {
    public static void main(String[] args) {       
        Fruit[] fruit = new Apple[10];
        fruit[0] = new Apple(); // OK
        fruit[1] = new Jonathan(); // OK
        // Runtime type is Apple[], not Fruit[] or Orange[]:
        try {
            // Compiler allows you to add Fruit:
            fruit[0] = new Fruit(); // ArrayStoreException
        } catch(Exception e) { System.out.println(e); }
        try {
            // Compiler allows you to add Oranges:
            fruit[0] = new Orange(); // ArrayStoreException
        } catch(Exception e) { System.out.println(e); }
        }
}

main 方法中的第一行廓啊,創(chuàng)建了一個 Apple數(shù)組并把它賦給 Fruit數(shù)組的引用欢搜。這是有意義的,AppleFruit 的子類谴轮,一個 Apple對象也是一種 Fruit對象炒瘟,所以一個 Apple 數(shù)組也是一種 Fruit的數(shù)組。這稱作數(shù)組的協(xié)變第步,Java 把數(shù)組設計為協(xié)變的疮装,對此是有爭議的,有人認為這是一種缺陷粘都。

盡管 Apple[] 可以 “向上轉(zhuǎn)型” 為 Fruit[]廓推,但數(shù)組元素的實際類型還是Apple,我們只能向數(shù)組中放入 Apple或者Apple 的子類翩隧。在上面的代碼中樊展,向數(shù)組中放入了Fruit 對象和 Orange對象。對于編譯器來說堆生,這是可以通過編譯的专缠,但是在運行時期,JVM能夠知道數(shù)組的實際類型是 Apple[]淑仆,所以當其它對象加入數(shù)組的時候就會拋出異常涝婉。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糯景,隨后出現(xiàn)的幾起案子嘁圈,更是在濱河造成了極大的恐慌省骂,老刑警劉巖蟀淮,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钞澳,居然都是意外死亡怠惶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門轧粟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來策治,“玉大人脓魏,你說我怎么就攤上這事⊥ū梗” “怎么了茂翔?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長履腋。 經(jīng)常有香客問我珊燎,道長,這世上最難降的妖魔是什么遵湖? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任悔政,我火速辦了婚禮坦胶,結(jié)果婚禮上坤邪,老公的妹妹穿的比我還像新娘。我一直安慰自己号阿,他們只是感情好迁沫,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布芦瘾。 她就那樣靜靜地躺著,像睡著了一般集畅。 火紅的嫁衣襯著肌膚如雪旅急。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天牡整,我揣著相機與錄音藐吮,去河邊找鬼。 笑死逃贝,一個胖子當著我的面吹牛谣辞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沐扳,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泥从,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沪摄?” 一聲冷哼從身側(cè)響起躯嫉,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杨拐,沒想到半個月后祈餐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡哄陶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年帆阳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屋吨。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜒谤,死狀恐怖山宾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳍徽,我是刑警寧澤资锰,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站阶祭,受9級特大地震影響台妆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胖翰,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一接剩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萨咳,春花似錦懊缺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舀凛,卻和暖如春俊扳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猛遍。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工馋记, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懊烤。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓梯醒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腌紧。 傳聞我的和親對象是個殘疾皇子茸习,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1 數(shù)組No11 數(shù)組:存放一組相同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構 數(shù)組本身是引用數(shù)據(jù)類型,數(shù)組中的元素可以是基本數(shù)據(jù)類型...
    征程_Journey閱讀 643評論 0 1
  • 在說說Java里有equals(上) - Java那些事兒這篇文章里壁肋,文末我們提到了String底層是char數(shù)組...
    清淺池塘V閱讀 363評論 0 2
  • java中的數(shù)組 語法: 注意: 數(shù)組相當于一個大的容器号胚,里面按順序存放了很多相同類型的數(shù)據(jù)元素; 想要獲取數(shù)組中...
    _信仰zmh閱讀 610評論 0 1
  • 文/楓鴻 車站浸遗,一方小小的站臺猫胁,人來人往,似乎沒有什么特別的意義乙帮。然而對于軍人杜漠,這一方站臺极景,卻承載著太多的的幸福與...
    楓鴻_a95c閱讀 318評論 3 5
  • 補上2周前做的一次教練回顧察净。 技術角度用的Balance驾茴,技術層面章法套路都有據(jù)可循,但缺少魂氢卡。 總結(jié)下來锈至,四大基...
    奈麗是一只神經(jīng)喵閱讀 135評論 0 0