1. 程式人生 > 實用技巧 >Java陣列

Java陣列

陣列

一.陣列的宣告建立

public class HelloWord {
    public static void main(String[] args) {
        int[] nums1;//定義
        int nums2[];
        int sum=0;
        nums1=new int[8];//建立一個數組
        nums1[0]=9;//給陣列元素中賦值
        for (int i=0;i<nums1.length;i++){
            sum+=nums1[i];
        }
        System.out.println(sum);
        System.out.println(nums1[1]);
    }
}

二.記憶體分析

java記憶體分析:

    • 存放new的物件和陣列;
    • 可以被所有執行緒共享,不會存放別的物件引用
    • 存放基本變數型別(會包含這個基本型別的具體數值)
    • 引用物件的變數(會存放這個引用在堆裡面的具體地址)
  • 方法區
    • 可以被所有的執行緒共享
    • 包含了所有的class和static變數

三.陣列的三種初始化

public class HelloWord {
    public static void main(String[] args) {
        //靜態初始化:建立+賦值
        int[] a={1,2,3,4,5,6,7,8};
        //動態初始化:含預設初始化(一經分配空間,每個元素都被隱式初始化)
         int[] b=new int[8];
         b[0]=10;

    }
}

四.陣列的四個基本特點

  • 其長度是確定的,一經建立,大小不能改變;
  • 元素必須是相同型別,不能出現混合型別;
  • 元素可以是任何資料型別,包括基本型別和引用型別;
  • 陣列本身就是物件,陣列元素相當於物件的成員變數;陣列物件本身是在堆中;

五.陣列的使用

public class HelloWord {
    public static void main(String[] args) {
      int[] arrays={1,2,3,4,5,6};
      //列印全部陣列元素
      for (int i=0;i<arrays.length;i++)
      {
          System.out.println(arrays[i]);
      }
      //計算全部元素的和
        int sum=0;
      for (int i=0;i<arrays.length;i++)
      {
          sum+=arrays[i];
      }
        System.out.println(sum);
      //查詢最大的元素
        int temp=arrays[0];
        for(int i=1;i<arrays.length;i++){
            if (temp<arrays[i]){
                temp=arrays[i];
            }
        }
        System.out.println(temp);
      //FOR-EACH迴圈
        for (int array:arrays) {
            System.out.println(array);
        }
        int[] test=new int[arrays.length];
        test=reverse(arrays);
    }
    //反轉陣列
    public static int[] reverse(int[] arrays){
        int[] result=new int[arrays.length];
        for (int i=0;i<arrays.length;i++){
            result[i]=arrays[arrays.length-i-1];
            System.out.println(result[i]);
        }
        return result;

    }
}

六.Arrays類

import java.util.Arrays;
public class HelloWord {
    public static void main(String[] args) {
        int[] a={54,3,7,8,4,345,90};
        //列印陣列元素
        System.out.println(Arrays.toString(a));
        //排序陣列元素(升序)
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        //陣列填充
        Arrays.fill(a,2,4,0);
        System.out.println(Arrays.toString(a));
    }
}

七.氣泡排序

import java.util.Arrays;
public class HelloWord {
    public static void main(String[] args) {
        int[] a={54,3,7,8,4,345,90};
        //臨時變數
        int temp=0;
        boolean flag=false;//標誌位減少比較
        //外層迴圈,判斷要走多少次
        for(int i=0;i<a.length-1;i++){
            //內層迴圈,比較判斷兩個數
            for(int j=0;j<a.length-1-i;j++){
                if(a[j]>a[j+1]){
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                    flag=true;
                }
                if (flag==false){
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(a));

    }
}

八.稀疏陣列

public class HelloWord {
    public static void main(String[] args) {
        //建立一個數組
        int[][] a=new int[6][6];
        a[2][2]=1;
        a[3][1]=2;
        a[5][2]=3;
        //計算其非零值
        int sum=0;
        //輸出陣列
        for (int i = 0; i <a.length; i++) {
            for(int j=0;j<a[i].length;j++){
                if(a[i][j]!=0){
                    sum++;
                }
                System.out.print(a[i][j]+"\t");
            }
            System.out.println();
        }
        //建立一個稀疏陣列
        int[][] b=new int[sum+1][3];
        b[0][0]=a.length;
        b[0][1]=a[0].length;
        b[0][2]=sum;
        //計算非零值存放在稀疏陣列的行數
        int count=0;
        for (int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
              if (a[i][j]!=0){
                  count++;
                  b[count][0]=i;
                  b[count][1]=j;
                  b[count][2]=a[i][j];
              }
            }
        }
        //輸出稀疏陣列
        for (int i = 0; i < b.length; i++) {
            for(int j=0;j<b[i].length;j++){
                System.out.print(b[i][j]+"\t");
            }
            System.out.println();

        }
        //讀取稀疏陣列
        int[][] c=new int[b[0][0]][b[0][1]];
        for(int i=1;i<b.length;i++){
                c[b[i][0]][b[i][1]]=b[i][2];
        }
        //輸出讀取的陣列
        for (int i = 0; i <c.length; i++) {
            for(int j=0;j<c[i].length;j++){
                System.out.print(c[i][j]+"\t");
            }
            System.out.println();
        }
    }
}