面試官:小伙子,給我說一下Java 數(shù)組吧

Java 數(shù)組

Java 語言中提供的數(shù)組是用來存儲固定大小的同類型元素。

1.聲明數(shù)組變量

首先必須聲明數(shù)組變量狭姨,才能在程序中使用數(shù)組。

dataType[] arrayRefVar;   // 首選的方法
dataType arrayRefVar[];  // 效果相同苏遥,但不是首選方法

建議使用 dataType[] arrayRefVar 的聲明風格聲明數(shù)組變量饼拍。 dataType arrayRefVar[] 風格是來自 C/C++ 語言 ,在Java中采用是為了讓 C/C++ 程序員能夠快速理解java語言田炭。
例子:

double[] myList;         // 首選的方法
double myList[];         //  效果相同师抄,但不是首選方法

2.創(chuàng)建數(shù)組

Java語言使用new操作符來創(chuàng)建數(shù)組

arrayRefVar = new dataType[arraySize];

上面的語法語句做了兩件事:

使用 dataType[arraySize] 創(chuàng)建了一個數(shù)組。

把新創(chuàng)建的數(shù)組的引用賦值給變量 arrayRefVar教硫。

數(shù)組變量的聲明叨吮,和創(chuàng)建數(shù)組可以用一條語句完成,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

另外瞬矩,你還可以使用如下的方式創(chuàng)建數(shù)組茶鉴。

dataType[] arrayRefVar = {value0, value1, ..., valuek};

數(shù)組的元素是通過索引訪問的。數(shù)組索引從 0 開始景用,所以索引值從 0 到 arrayRefVar.length-1蛤铜。
下面的語句首先聲明了一個數(shù)組變量 myList,接著創(chuàng)建了一個包含 10 個 double 類型元素的數(shù)組丛肢,并且把它的引用賦值給 myList 變量围肥。

public class TestArray {
   public static void main(String[] args) {
      // 數(shù)組大小
      int size = 10;
      // 定義數(shù)組
      double[] myList = new double[size];
      myList[0] = 5.6;
      myList[1] = 4.5;
      myList[2] = 3.3;
      myList[3] = 13.2;
      myList[4] = 4.0;
      myList[5] = 34.33;
      myList[6] = 34.0;
      myList[7] = 45.45;
      myList[8] = 99.993;
      myList[9] = 11123;
      // 計算所有元素的總和
      double total = 0;
      for (int i = 0; i < size; i++) {
         total += myList[i];
      }
      System.out.println("總和為: " + total);
   }
}
總和為: 11367.373

下面的圖片描繪了數(shù)組 myList。這里 myList 數(shù)組里有 10 個 double 元素蜂怎,它的下標從 0 到 9穆刻。


3.處理數(shù)組

數(shù)組的元素類型和數(shù)組的大小都是確定的,所以當處理數(shù)組元素時候杠步,我們通常使用基本循環(huán)或者 For-Each 循環(huán)氢伟。該實例完整地展示了如何創(chuàng)建、初始化和操縱數(shù)組:

public class TestArray {
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // 打印所有數(shù)組元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // 計算所有元素的總和
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // 查找最大元素
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

4.For-Each 循環(huán)

JDK 1.5 引進了一種新的循環(huán)類型幽歼,被稱為 For-Each 循環(huán)或者加強型循環(huán)朵锣,它能在不使用下標的情況下遍歷數(shù)組。

for(type element: array) {
    System.out.println(element);
}

例子:

public class TestArray {
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // 打印所有數(shù)組元素
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

結果如下:

1.9
2.9
3.4
3.5

5.數(shù)組作為函數(shù)的參數(shù)

數(shù)組可以作為參數(shù)傳遞給方法甸私。例子如下:

public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}

下面例子調用 printArray 方法打印出 3诚些,1,2,6诬烹,4 和 2:

printArray(new int[]{3, 1, 2, 6, 4, 2});

6.數(shù)組作為函數(shù)的返回值

public static int[] reverse(int[] list) {
  int[] result = new int[list.length];
 
  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
    result[j] = list[i];
  }
  return result;
}

7.多維數(shù)組

多維數(shù)組可以看成是數(shù)組的數(shù)組砸烦,比如二維數(shù)組就是一個特殊的一維數(shù)組,其每一個元素都是一個一維數(shù)組绞吁,例如:String str[][] = new String[3][4];

1.多維數(shù)組的動態(tài)初始化(以二維數(shù)組為例)

直接為每一維分配空間

type[][] typeName = new type[typeLength1][typeLength2];

type 可以為基本數(shù)據類型和復合數(shù)據類型幢痘,arraylength1 和 arraylength2 必須為正整數(shù),arraylength1 為行數(shù)家破,arraylength2 為列數(shù)颜说。
2.從最高維開始,分別為每一維分配空間汰聋,例如:

String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
s[0][0] = new String("Good");
s[0][1] = new String("Luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");

s[0]=new String[2] 和 s[1]=new String[3] 是為最高維分配引用空間门粪,也就是為最高維限制其能保存數(shù)據的最長的長度,然后再為其每個數(shù)組元素單獨分配空間 s0=new String(“Good”) 等操作马僻。

多維數(shù)組的引用(以二維數(shù)組為例)

對二維數(shù)組中的每個元素庄拇,引用方式為 arrayName[index1][index2]

8.Arrays 類

java.util.Arrays 類能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的韭邓。
具有以下功能:

給數(shù)組賦值:通過 fill 方法措近。

對數(shù)組排序:通過 sort 方法,按升序。

比較數(shù)組:通過 equals 方法比較數(shù)組中元素值是否相等女淑。

查找數(shù)組元素:通過 binarySearch 方法能對排序好的數(shù)組進行二分查找法操作瞭郑。

看完有什么不懂的歡迎在下方留言評論

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸭你,隨后出現(xiàn)的幾起案子屈张,更是在濱河造成了極大的恐慌,老刑警劉巖袱巨,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阁谆,死亡現(xiàn)場離奇詭異,居然都是意外死亡愉老,警方通過查閱死者的電腦和手機场绿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫉入,“玉大人焰盗,你說我怎么就攤上這事≈淞郑” “怎么了熬拒?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長垫竞。 經常有香客問我澎粟,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任捌议,我火速辦了婚禮哼拔,結果婚禮上引有,老公的妹妹穿的比我還像新娘瓣颅。我一直安慰自己,他們只是感情好譬正,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布宫补。 她就那樣靜靜地躺著,像睡著了一般曾我。 火紅的嫁衣襯著肌膚如雪粉怕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天抒巢,我揣著相機與錄音贫贝,去河邊找鬼。 笑死蛉谜,一個胖子當著我的面吹牛稚晚,可吹牛的內容都是我干的。 我是一名探鬼主播型诚,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼客燕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狰贯?” 一聲冷哼從身側響起也搓,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涵紊,沒想到半個月后傍妒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡摸柄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年颤练,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塘幅。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡昔案,死狀恐怖,靈堂內的尸體忽然破棺而出电媳,到底是詐尸還是另有隱情踏揣,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布匾乓,位于F島的核電站捞稿,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜娱局,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一彰亥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衰齐,春花似錦任斋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抹缕,卻和暖如春澈蟆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卓研。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工趴俘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奏赘。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓寥闪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親志珍。 傳聞我的和親對象是個殘疾皇子橙垢,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351