世界熱議:【學懂Java】(三)數組

2023-01-16 17:10:35 來源:51CTO博客

一.概述

a.數組是相同類型數據的有序集合:

相同類型的若干個數據,按照一定先后次序排列組合而成。其中,每一個數據稱作一個數組元素每個數組元素可以通過一個下標來訪問它們.

b.數組特點:

其長度是確定的。數組一旦被創建,它的大小就是不可以改變的。其元素必須是相同類型,不允許出現混合類型。數組中的元素可以是任何數據類型,包括基本類型和引用類型。

c.數組屬引用類型:

length, elements of the array

d.注意

聲明一個變量就是在內存空間劃出一塊合適的空間,聲明一個數組就是在內存空間劃出一串連續的空間數組只有一個名稱,即標識符元素下標標明了元素在數組中的位置,從0開始數組中的每個元素都可以通過下標來訪問數組長度固定不變,避免數組越界

二.使用

1、聲明數組: 告訴計算機數據類型是什么--數據類型[ ] 數組名 ;??int[] array;??

2、分配空間: 告訴計算機分配幾個連續的空間--數據類型[ ] 數組名 = new 數據類型[大小] ;??array = new int[5];??


(相關資料圖)

3、賦值:向分配的格空間里放數據??array[0] = 0;??

4、處理數據:??array[0] = array[0] + 1;??

(1)一維數組

1.聲明并申請空間

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

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

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

2.聲明并且賦值

??int[] arr = new int[]{1,2,3,4,5};//這樣說明數組大小為5??

??int[] arr = {1,2,3};??

3.處理

??System.out.println(arr1.length);??打印數組長度,為申請空間的長度,不管是否賦值。

4.初始化

動態初始化

數組定義與為數組元素分配空間并賦值的操作分開進行
int a[] = null;a = new int[3];a[0] = 3;a[1] = 2;a[2] = 1;

靜態初始化

除了用new關鍵字來產生數組以外,還可以直接在定義數組的同時就為數組元素分配空間并賦值。格式: 類型 [] 數組名 = {元素1, 元素2 ......};

默認初始化

數組是引用類型,它的元素相當于類的實例變量,因此數組一經分配空間,其中的每個元素也被按照實例變量同樣的方式被隱式初始化。

int: 0boolean:falseString:null

5.數組范圍

數組元素下標從0開始;長度為n的數組合法下標取值范圍: 0 ~ n-1;

(2)數組排序*

因為數組相當于是數據結構的一種,很多數據經常要使用數組.因此需要了解:

某種排序算法冒泡排序選擇排序插入排序快速排序排序算法的時間復雜度,空間復雜度:衡量一個數據結構是否合適的衡量標準排序算法的穩定性:排序之后的值跟排序之前的值位置是否發生變化

冒泡排序

public static void bubbleSort(int array[]) {    int t = 0;    for (int i = 0; i < array.length - 1; i++)    {        for (int j = 0; j < array.length - 1 - i; j++)        {            if (array[j] > array[j + 1])            {                t = array[j];                array[j] = array[j + 1];                array[j + 1] = t;            }        }    }}

選擇排序

public static void selectionSort(int[] array) {        for (int i = 0; i < array.length; i++)        {            int index = i;            for (int j = i; j < array.length; j++)            {                if (array[j] < array[index])                     index = j;             }            int temp = array[index];            array[index] = array[i];            array[i] = temp;        }    }

插入排序

public static void insertionSort(int[] array) {        int current;        for (int i = 0; i < array.length - 1; i++) {            current = array[i + 1];            int preIndex = i;            while (preIndex >= 0 && current < array[preIndex]) {                array[preIndex + 1] = array[preIndex];                preIndex--;            }            array[preIndex + 1] = current;        }    }

快速排序

public static int[] QuickSort(int[] array, int start, int end) {        if (array.length < 1 || start < 0 || end >= array.length || start > end) return null;        int smallIndex = partition(array, start, end);        if (smallIndex > start)            QuickSort(array, start, smallIndex - 1);        if (smallIndex < end)            QuickSort(array, smallIndex + 1, end);        return array;    } public static int partition(int[] array, int start, int end) {        int pivot = (int) (start + Math.random() * (end - start + 1));        int smallIndex = start - 1;        swap(array, pivot, end);        for (int i = start; i <= end; i++)            if (array[i] <= array[end]) {                smallIndex++;                if (i > smallIndex)                    swap(array, i, smallIndex);            }        return smallIndex;    } public static void swap(int[] array, int i, int j) {        int temp = array[i];        array[i] = array[j];        array[j] = temp;    }

(3)二維數組

二維數組的使用

public class TwoArray{        public static void main(String[] args)    {                int[] arr = new int[6];        int[][] arr2 = new int[3][];        //創建二維數組的對象        arr2[0] = new int[5];        arr2[1] = new int[3];        arr2[2] = new int[4];        //賦值        arr2[0][0] = 1;        arr2[0][1] = 2;        arr2[0][2] = 3;        arr2[0][3] = 4;        arr2[0][4] = 5;                arr2[1][0] = 6;        arr2[1][1] = 7;        arr2[1][2] = 8;                arr2[2][0] = 9;        arr2[2][1] = 10;        arr2[2][2] = 11;        arr2[2][3] = 12;                for(int i = 0;i

注意

1.二維數組舉例:

??int [][] a = {{1,2},{3,4,0,9},{5,6,7}};??

Java中多維數組不必須是規則矩陣形式,例如

int[] arr = new int[6];int[][] arr2 = new int[3][];//創建二維數組的對象arr2[0] = new int[2];arr2[1] = new int[4];arr2[2] = new int[3];

2.二維數組可以看成以數組為元素的數組

Java中多維數組的聲明和初始化應按從高維到低維的順序進行,例如:

3.二維數組的初始化

動態初始化??int [ ][ ] arr=new int [4][3]; ??也可以理解為“4行3例”靜態初始化數據類型 [ ][ ] 數組名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};舉例:??int [ ][ ] arr={{1,2,3},{1,3,4,5},{1,5,6,7,9}};??注意??int [][]arr=new int[3][]; 正確????int [][]arr=new int[][3]; 錯誤??二維數組可以不定義列數,但必須定義行數。因為每行的列數可能不一樣,所以這類數組的實現方法為:先創建制定行數,列數缺省的二維數組,然后對數組的每一行重新初始化
int [][]arr=new int[3][];arr[0]=new int[7];arr[1]=new int[4];arr[2]=new int[5];

標簽: 數組元素 數據類型 引用類型

上一篇:天天速讀:如何實現大地圖漫游功能
下一篇:焦點快報!HDFS機架感知