Java數組

Java數組

目錄java

1.數組概述數組

2.數組聲明建立工具

3.內存分析及三種初始化線程

4.下標越界3d

5.數組的使用code

6.多維數組對象

7.Arrays類blog

1.數組概述

數組的定義

  • 數組是相同數據類型的有序集合排序

  • 數組描述的是相同數據類型的若干個數據,按照必定的前後次序排列組合而成索引

  • 每個數據稱作數組的元素,每一個數組元素能夠經過一個下標來訪問它們
    請添加圖片描述

2.數組聲明建立

(1).首先必須聲明數組變量,才能在程序中使用數組

聲明數組變量的語法

dateType[] arrayRefVar; //首選方法
或
dateType arrayRefVar[]; //效果相同,但不是首選方法

(2).Java語言使用new操做符來建立數組,語法以下:

dateType[] arrayRefVar = new dateType[arraySize];

(3).數組的元素是經過索引來訪問的,數組索引從零開始

(4).獲取數組長度

arrays.length

例: 數組的聲明和建立

請添加圖片描述

public class ArraysDemo01 {
    public static void main(String[] args) {

        int [] nums; //(定義)聲明一個數組
        nums = new int[10]; //建立一個數組
        // nums這個數組能夠存放10個int類型的數據
        
        //把聲明和建立寫一塊
        //int[] nums = new int[10];

        //給數組元素賦值
        nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        nums[3] = 4;
        nums[4] = 5;
        nums[5] = 6;
        nums[6] = 7;
        nums[7] = 8;
        nums[8] = 9;
        nums[9] = 10;

        System.out.println(nums[0]);
    }
}

運行結果
請添加圖片描述

例: 計算全部元素的和

int sum = 0;
        //獲取數組長度   nums.length

        for (int i = 0;i < nums.length;i++){
            sum = sum + nums[i];
        }

        System.out.println("總和爲:"+ sum);

運行結果
請添加圖片描述

例:

nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        nums[3] = 4;
        nums[4] = 5;
        nums[5] = 6;
        nums[6] = 7;
        nums[7] = 8;
        nums[8] = 9;
		System.out.println(nums[9]);
        //假設咱們不給num[9]賦值,這裏則輸出一個默認值:0

3.內存分析及三種初始化

(1).Java內存

  • 堆:

    • 存放new的對象和數組
    • 能夠被全部的線程共享,不會存放別的對象引用
  • 棧:

    • 存放基本變量類型(會包含這個基本類型的具體數值)
    • 引用對象的變量(會存放這個存放在堆裏面的具體地址)
  • 方法區:

    • 能夠被全部的線程共享

    • 包含了全部的class和static變量

聲明數組、建立數組和給數組元素賦值時的內存圖解

請添加圖片描述
請添加圖片描述

(2).三種初始化

  • 靜態初始化
//  建立 + 賦值
int[] a = {1,2,3}
Man[] mans = {new Man(1,1) , new Man(2,2)}
  • 動態初始化(包含,默認初始化)
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
  • 數組的默認初始化

數組是引用類型,它的原數至關於類的實例變量,所以數組一經分配空間,其中的每一個元素也被按照實例變量一樣的方式被隱式初始化

4.下標越界

(1).數組的四個基本特色

  • 數組長度是肯定的。數組一旦被建立,它的大小就是不能夠改變的

若是越界,則報:ArrayIndexOutOfBoundsException:數組下標異常

  • 其元素 必須是相同類型的,不容許出現混合類型

  • 數組中的元素能夠是任何數據類型,包括基本型和引用型

  • 數組變量屬引用類型,數組也能夠當作是對象,數組中的每個元素至關於該對象的成員變量

    數組自己就是變量,Java中對象是在堆裏的,所以數組不管保存原始類型仍是其餘對象類型,數組對象自己是是在堆中的

(2).數組邊界

  • 下標的合法區:[0 ~ length - 1] ,若是越界就會報錯

    public static void main[String[] args]{
        int[] a = new int[2];
        System.out.println(a[2]); //數組下標越界
    }

5.數組的使用

(1).For-Each 循環

例:和for循環遍歷使用

public class ArraysDemo02 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        int sum = 0;

        //打印數組全部元素
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
        System.out.println();
        //計算全部元素的和
        for (int i = 0; i < arrays.length; i++) {
            sum += arrays[i];
        }
        System.out.println("sum = "+ sum);

        //查找最大數
        int max = arrays[0];
        for (int i = 0; i < arrays.length; i++) {
            if (arrays[i] > max){
                max = arrays[i];
            }
        }
        System.out.println("max = "+max);
    }
}

運行結果
請添加圖片描述

例: 加強for循壞打印數組元素

public class ArraysDemo03 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        
        //JDK 1.5
        //沒有下標
        for (int array:arrays){
            System.out.print(array);
            System.out.println();
        }
    }
}

(2).數組作方法入參

例:

public class ArraysDemo04 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        printArray(arrays);
    }

    //打印數組元素
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
    }
}

運行結果

請添加圖片描述

(3).數組作返回值

例:

public class ArraysDemo05 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};

        int[] reverse = reverse(arrays);
        printArray(reverse);
    }

    //反轉數組
    public static int[] reverse(int[] arrays){
        int[] result = new int[arrays.length];
        //反轉操做
        for (int i = 0,j = result.length - 1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];
        }
        return result;
    }

    //打印數組元素
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
    }
}

運行結果
請添加圖片描述

6.多維數組

  • 多維數組能夠當作是數組的數組。好比二維數組就是一個特殊的一維數組,其中每個元素都是一個一維數組

  • 二維數組

    int a[][] = new int[2][5];

    以上二維數組 a 能夠當作一個2行5列的數組

一維數組和多維數組圖解

一維數組
請添加圖片描述
二維數組
請添加圖片描述

例: 建立一個二維數組

public class Demo06 {
    public static void main(String[] args) {

        //[4][2]:4行2列
        /*
         1,2   array[0]  (能夠把它當作一個直角座標系)
         2,3   array[1]
         3,4   array[2]
         4,5   array[3]
        */
        int[][] array = {{1,2},{2,3},{3,4},{4,5}};
        //打印{1,2}
        System.out.print(array[0][0] + " ");
        System.out.println(array[0][1]);
    }
}

運行結果
請添加圖片描述

例: 用for循壞打印出這個數組

public class Demo06 {
    public static void main(String[] args) {

        int[][] array = {{1,2},{2,3},{3,4},{4,5}};

        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + ",");
            }
        }
    }
}

運行結果
請添加圖片描述

7.Arrays類

  • 數組的工具類 java.util.Arrays

  • 因爲數組對象自己沒有什麼方法能夠供咱們調用,但API中提供了一個工具類Arrays供咱們速用,從而能夠對數據的對象進行一些基本的操做

  • 查看 JDK 幫助文檔

  • Arrays類中的方法都是static修飾的靜態方法,在使用的時候能夠直接使用類名進行調用,從而「不用」使用對象來調用

  • 具備一下經常使用功能

    • 給數組賦值:經過 fill 方法
    • 對數組排序:經過 sort 方法(升序)
    • 比較數組:經過 equals 方法比較數組中元素值是否相等
    • 查找數組元素:經過 binarySearch 方法能對排序好的數組進行二分查找法操做

例:

import java.util.Arrays;

public class Demo07 {
    public static void main(String[] args) {
        int[] a = {1,45,988,345,652,0,99};

        //打印數組元素
        System.out.println(Arrays.toString(a));

        //排序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
    }
}
相關文章
相關標籤/搜索