中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java之:數組類型

發布時間:2020-06-18 04:36:54 來源:網絡 閱讀:205 作者:nineteens 欄目:編程語言

  數組是編程語言中最常見的一種數據結構,可以存儲多個數據,每一個數組元素存放一個數據,可以通過數組的下標索引來訪問數組元素,也可以通過下標索引來賦值。

  理解數組

  在Java中,一個數組要求具有相同的數據類型,一旦數組初始化完成,那么數組在內存中所占用的空間將被固定下來,所以說,數組的長度是不可改變的,就算是把某個數組元素清空,也同樣會被保留空間,依然屬于這個數組。

  Java的數組既可以存儲基本數據類型,也可以存儲引用數據類型,唯一的條件就是要求具有相同的數據類型。

  定義數組

  Java中定義數組有兩種方式,如下,推薦使用第一行那種方式,有著更直觀的語意,并且還具有更好地可讀性

  int[] arr1;

  int arr2[];

  數組是一種引用類型的變量,因此使用它定義一個變量時,僅僅表示定義了一個引用變量(等于定義了一個指針),這個引用變量還未指向任何有效的內存,因此定義數組時不能指定數組的長度。而且由于定義數組只是定義了一個引用類型變量,并未指向任何有效的內存空間,所以還沒有空間來存儲數組元素,因此,這個數組也不能夠被使用,只有對數組完成初始化后才能夠使用。

  數組的初始化

  Java中數組必須先初始化后才能夠被使用,初始化就是為數組分配指定的內存空間,并給數組賦初始值。

  有兩種初始化的方式:

  靜態初始化:初始化時直接指定每個元素的初始值,由系統決定數組長度。

  動態初始化:初始化時直接指定數組長度,由系統為數組分配初始值。

  靜態初始化

  假如我現在定一個int類型數組:

  初始化數組時候直接在花括號中寫好對應的值,系統會自動確定數組的長度,此時這個arr數組內部就有了1到10這些int類型的值。

  int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  當然,還有一種寫法也可行:

  int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  動態初始化

  假如我現在定一個int類型長度為10的數組:

  動態初始化時候指定數組的長度,系統會自動為數組內部元素指定初始值

  int[] arr = new int[10];

  數組的類型可以是整數類型、浮點類型、字符類型、布爾類型和引用類型。

  數組的使用

  數組的使用包括取出數組元素和賦值數組。訪問數組元素是通過在數組后緊跟 “[ ]” ,就可以根據括號中的索引值查找元素或者賦值。在Java中數組下標索引是從0開始的,所以,最后一個元素下標索引是數組長度減1。下面來看看基本使用方法(取出和賦值)。

  public class Main {

  public static void main(String[] args) {

  int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  int number1 = arr[0];

  int number2 = arr[1];

  System.out.println(number1);//將輸出1

  System.out.println(number2);//將輸出2

  arr[0] = 100;

  System.out.println(arr[0]);//將輸出100

  }

  }

  以上都是操作數組的正常方式,從1 - 10共有10個元素,但是如果我們取第11個會發生什么呢?

  public class Main {

  public static void main(String[] args) {

  int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  int number1 = arr[11];

  }

  }

  報異常了,數組越界!

  還有一種情況,如果下標索引是負數呢?

  同樣,也是異常,越界!

  所以說,訪問數組下標不能夠超出(數組長度-1),且下標索引必須大于等于0。

  數組的遍歷

  public class Main {

  public static void main(String[] args) {

  int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  //可以通過數組.length拿到數組長度

  for (int i = 0; i < arr.length; i++) {

  System.out.println(arr[i]);

  }

  }

  }

  數組的賦值

  基本創建數組已經會了,假如我只給數組初始化長度,不給賦值會輸出什么呢?下面來看看效果:

  用int類型來試試

  public class Main {

  public static void main(String[] args) {

  int[] arr = new int[10];

  //可以通過數組.length拿到數組長度

  for (int i = 0; i < arr.length; i++) {

  System.out.println(arr[i]);

  }

  }

  }

  結果默認值全是0

  如果是String類型呢?

  public class Main {

  public static void main(String[] args) {

  String[] arr = new String[10];

  //可以通過數組.length拿到數組長度

  for (int i = 0; i < arr.length; i++) {

  System.out.println(arr[i]);

  }

  }

  }

  結果全是null(為空)

  可見,只要符合創建數組,不賦值的情況下,數組會自動分配默認值。

  數組的深入理解

  數組是一種引用數據類型,數組引用變量只是一個引用,數組元素和數組變量在內存中是分開來存放的。

  內存中的數組鄭州婦科在線醫生 http://www.zzkdfk120.com/

  數組引用變量只是一個引用,引用變量可以指向任何有效的內存,只有當前引用指向有效的內存中,才能通過該數組變量來訪問數組元素。

  實際的數組對象被存在堆內存中,如果引用該數組對象的數組引用變量是一個局部變量,那么它被存放在棧內存中。

  如果堆內存中不再有任何變量引用自己,則這個數組將成為垃圾,該數組所占的內存將會被垃圾回收機制回收。

  多維數組

  多維數組,顧名思義,就是有多個維度的數組(只是先這么理解,其實是不存在的),比如初始化一個數組,像以上初始化,那么都是一維數組,下面來定義一個二維數組:

  這代表了5行5列的數組:

  public class Main {

  public static void main(String[] args) {

  int[][] arr = new int[5][5];

  }

  }

  我們來進行初始化:

  public class Main {

  public static void main(String[] args) {

  int[][] arr = new int[][]{

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5}

  };

  }

  }

  同樣,引用下標也是如此,比如說引用第二行,第三列的的一個元素:

  public class Main {

  public static void main(String[] args) {

  int[][] arr = new int[][]{

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5},

  {1, 2, 3, 4, 5}

  };

  int number = arr[1][2];

  System.out.println(number);

  }

  }

  同理,我也可以定義一個三維數組:

  public class Main {

  public static void main(String[] args) {

  int[][][] arr = new int[][][]{

  {

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6}

  }, {

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6}

  }, {

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6}

  }, {

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6},

  {1, 2, 3, 4, 5, 6}

  }

  };

  int number = arr[1][2][3];

  System.out.println(number);

  }

  }

  增強工具類 Arrays

  Arrays包含了很多靜態方法,都寫在了注釋中,不做再詳細的解釋:(注釋已經夠詳細了,實在沒辦法解釋)

  import java.util.Arrays;

  public class Main {

  public static void main(String[] args) {

  int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};

  //使用二分查找查詢key元素在arr數組中出現的索引,如果arr數組中不包括key元素的值,則返回負數。

  //要求:該數組元素已經升序排列。

  int i = Arrays.binarySearch(arr, 3);

  System.out.println(i);//輸出2

  //與第一種類似,但是只搜索2 - 6 索引的值。同理,要求已經升序排列。

  int i2 = Arrays.binarySearch(arr, 2, 6, 3);

  System.out.println(i2);//輸出2

  //根據arr數組復制出來一個新數組,15代表的是復制出來新數組的長度,arr長度為9,但是這里大于就,則會往數組中添加默認值,湊夠15為止。

  int[] ints = Arrays.copyOf(arr, 15);

  //也是復制數組,但是只會復制從索引2到索引5的元素

  int[] ints2 = Arrays.copyOfRange(arr, 2, 5);

  //將所有數組元素都賦值為0,無返回值

  Arrays.fill(arr, 0);

  //將下標索引2-5元素賦值為0

  Arrays.fill(arr, 2, 5, 0);

  //將數組排序,無返回值

  Arrays.sort(arr);

  //只會排序下標2到5的元素,無返回值

  Arrays.sort(arr, 2, 5);

  //將數組轉化為String字符串

  String s = Arrays.toString(arr);

  }

  }


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南乐县| 同仁县| 马尔康县| 离岛区| 广德县| 平遥县| 磐安县| 张家港市| 安平县| 灵山县| 永济市| 乾安县| 益阳市| 紫金县| 巧家县| 论坛| 渝中区| 太康县| 株洲市| 鲁甸县| 尖扎县| 仁寿县| 郸城县| 长葛市| 和林格尔县| 兴文县| 宜昌市| 夏津县| 沭阳县| 镇巴县| 湘乡市| 凌源市| 黄平县| 克山县| 丰都县| 逊克县| 永昌县| 定南县| 木里| 南城县| 丹巴县|