Java數(shù)組的定義及使用

數(shù)組的基本概念

所有的開發(fā)中都可能使用到數(shù)組榔袋,但并沒有特別復雜,更多的是為了防止筆試中出現(xiàn)的問題

數(shù)組指的是一組相關(guān)變量的集合

在Java中數(shù)組屬于引用數(shù)據(jù)類型,牽扯到內(nèi)存的關(guān)系讯嫂。對于數(shù)組的定義有以下兩種語法形式:

  • 聲明并開辟數(shù)組:數(shù)據(jù)類型 數(shù)組名稱[] = new 數(shù)據(jù)類型[長度];如:int data[] = new int[3];

  • 聲明數(shù)組:數(shù)據(jù)類型 數(shù)組名稱[] = null;如:int data[];
    開辟數(shù)組:數(shù)組名稱 = new 數(shù)據(jù)類型[長度];如:data = new int[3];

當數(shù)組開辟之后浇垦,可采用數(shù)組[索引]的形式進行數(shù)組的訪問炕置,但是需要注意的是,任何長度的數(shù)組其范圍一定是從“0”開始的男韧。如果操作中超過了數(shù)組所允許的索引范圍朴摊,則程序會出現(xiàn)ArrayIndexOutOfBoundsException報錯

以上是數(shù)組的動態(tài)初始化,特點:數(shù)組開辟空間之后此虑,數(shù)組中每個元素的內(nèi)容都是其對應數(shù)據(jù)類型的默認值

數(shù)組輸出

由于數(shù)組本身是一種順序式的結(jié)構(gòu)甚纲,且長度固定,所以在進行數(shù)組內(nèi)容輸出的時候朦前,往往可以采用for循環(huán)的方式完成介杆。因此就牽扯到數(shù)組長度的獲取,在Java中可以使用數(shù)組.length的屬性獲取數(shù)組的長度

public class MyClass {
    public static void main(String[] args){
        int data[] = new int[3];//聲明并創(chuàng)建數(shù)組
        //對數(shù)組賦值
        data[0] = 10;
        data[1] = 20;
        data[2] = 30;
        //利用數(shù)據(jù).length與for循環(huán)輸出數(shù)組
        for (int i = 0;i < data.length;i++){
            System.out.print(data[i]+"韭寸、");
        }
    }
}

數(shù)組的引用分析

引用數(shù)據(jù)類型的分析過程基本相同春哨,所以數(shù)組的引用分析其本質(zhì)也是一樣的,與對象的流程是相同的

聲明并開辟數(shù)組賦值內(nèi)存關(guān)系圖

下圖的流程與普通對象的流程本質(zhì)上是沒有任何差別的恩伺,唯一的區(qū)別是普通對象保存的是屬性赴背,利用屬性名稱來操作,而數(shù)組保存的是一組內(nèi)容晶渠,用索引來操作

聲明并開辟數(shù)組賦值內(nèi)存關(guān)系圖
數(shù)組的引用內(nèi)存關(guān)系圖

引用的本質(zhì)是同一個堆內(nèi)存可以被不同的棧內(nèi)存所指向并修改

image.png

數(shù)組的靜態(tài)初始化

  • 動態(tài)初始化:只能在開辟數(shù)組空間之后才可以進行賦值

  • 靜態(tài)初始化:在數(shù)組開辟的同時就可以存在明確的內(nèi)容凰荚,語法如下:

    簡化型:數(shù)據(jù)類型 數(shù)組名稱[] = {值,值褒脯,...};
    完全型(推薦使用):數(shù)據(jù)類型 數(shù)組名稱[] = new 數(shù)據(jù)類型[] {值便瑟,值,...};

  • 匿名對象的用法:new 數(shù)據(jù)類型[]{值番川,值到涂,...};

二維數(shù)組

二維數(shù)組實際上與數(shù)據(jù)表的形式是相同的,由行和列組成爽彤,想要確定一個數(shù)據(jù)需要得知他的行和列的編號

列索引 0 列索引 1 列索引 2
行索引 0 23 5611 845
行索引 1 223 61 8
  • 靜態(tài)初始化:int data[] = new int[]{{值,值,...},{值,值,...},...}
  • 動態(tài)初始化:int data[] = new int[行個數(shù)][列個數(shù)] data = {{值,值,...},{值,值,...},...}
二維數(shù)組的置換:
public class MyClass {
    public static void main(String[] args){
        int data[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};//創(chuàng)建二維數(shù)組
        for (int i = 0; i < data.length; i++){
            for (int j = 0; j < data[i].length; j++){
                //將二維數(shù)組進行置換
                int temp = data[i][j];
                data[i][j] = data[j][i];
                data[j][i] = temp;
            }
        }
        for (int i = 0; i < data.length; i++){
            for (int j = 0; j < data[i].length; j++){
                System.out.print(data[i][j]);//輸出
            }
            System.out.println();
        }
    }
}

一般用于訓練邏輯思維

數(shù)組相關(guān)操作方法

數(shù)組拷貝

System.arraycopy(原始數(shù)組养盗,原始數(shù)組開始點,目標數(shù)組适篙,目標數(shù)組開始點往核,拷貝長度);

范例:

  • 原始數(shù)組①: 1、\color{red}{2}嚷节、\color{red}{3}聂儒、\color{red}{4}虎锚、5、6衩婚、7窜护、8、9非春;
  • 原始數(shù)組②:10柱徙、20、30奇昙、40护侮、50、\color{red}{60}储耐、\color{red}{70}羊初、\color{red}{80}、90什湘;
  • 希望將數(shù)組②的部分內(nèi)容替換掉數(shù)組1的內(nèi)容:\color{red}{60长赞、70、80}
class ArrCopy{
    public static void main(String[] args){
        int data1[] = new int[]{1,2,3,4,5,6,7,8,9};
        int data2[] = new int[]{10,20,30,40,50,60,70,80,90};
        System.arraycopy(data2,5,data1,1,3);
        printArr(data1);
    }
    public static void printArr(int data[]){
        for (int i = 0; i < data.length; i++){
            System.out.print(data[i]+"闽撤、");
        }
    }
}

運行結(jié)果:1得哆、60、70腹尖、80柳恐、5、6热幔、7、8讼庇、9

數(shù)組排序

Arrays.sort(原始數(shù)組);

范例:

  • 原始數(shù)組:2绎巨、1、6蠕啄、4场勤、3、9歼跟、7和媳、8、5
class ArrSort{
    public static void main(String[] args){
        int data[] = new int[]{2,1,6,4,3,9,7,8,5};
        Arrays.sort(data);
        printArr(data);
    }
    public static void printArr(int data[]){
        for (int i = 0; i < data.length; i++){
            System.out.print(data[i]);
        }
    }
}

運行結(jié)果:1哈街、2留瞳、3、4骚秦、5她倘、6璧微、7、8硬梁、9

總結(jié)

  • 數(shù)組屬于引用數(shù)據(jù)類型
  • 數(shù)組屬于線性的存儲結(jié)構(gòu)前硫,里面的內(nèi)容可以根據(jù)索引線性操作
  • 數(shù)組里面容易出現(xiàn)面試題!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荧止,一起剝皮案震驚了整個濱河市屹电,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跃巡,老刑警劉巖嗤详,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓷炮,居然都是意外死亡葱色,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門娘香,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苍狰,“玉大人,你說我怎么就攤上這事烘绽×苷眩” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵安接,是天一觀的道長翔忽。 經(jīng)常有香客問我,道長盏檐,這世上最難降的妖魔是什么歇式? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮胡野,結(jié)果婚禮上材失,老公的妹妹穿的比我還像新娘。我一直安慰自己硫豆,他們只是感情好龙巨,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熊响,像睡著了一般旨别。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汗茄,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天秸弛,我揣著相機與錄音,去河邊找鬼。 笑死胆屿,一個胖子當著我的面吹牛奥喻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播非迹,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼环鲤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了憎兽?” 一聲冷哼從身側(cè)響起冷离,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纯命,沒想到半個月后西剥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡亿汞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年瞭空,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疗我。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咆畏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吴裤,到底是詐尸還是另有隱情旧找,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布麦牺,位于F島的核電站钮蛛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剖膳。R本人自食惡果不足惜魏颓,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望潮秘。 院中可真熱鬧琼开,春花似錦、人聲如沸枕荞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躏精。三九已至,卻和暖如春鹦肿,著一層夾襖步出監(jiān)牢的瞬間矗烛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞭吃,地道東北人碌嘀。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像歪架,于是被迫代替她去往敵國和親股冗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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