聲明數組:int[] nums;
實例化數組:new int[10];
給數組中的元素賦值:nums[0]=1;nums[1]=2;...nums[9]=10;
獲取數組的長度:nums.length獲取數組中某個元素的值:nums[9]堆:存放new的對象和數組,可被所有的線程共享,不會存放別的對象引用
棧:存放基本變量類型(包含該基本變量類型的具體數值)
方法區:包含了所有的class和static變量,可以被所有的線程共享
當聲明數組時,往棧中壓入nums,只是一個名字,此時數組還不存在。
實例化數組時,會在堆中開闢了一段可存10個int的內存空間。靜態初始化(程式設計師先賦值,系統計算長度):int[] a = {1,2,3,4,5,6,7,8}
動態初始化(程式設計師先指定數組長度,系統先自動賦默認值,然後再由程式設計師重新賦值):int[] b = new int[8];b[0] = 1;數組一旦創建(實例化),其長度就已確定,不可改變.數組一旦越界,將出現數組下標越界異常:java.lang.ArrayIndexOutOfBoundsException數組屬於對象,存在堆中int[][] array = {{1,2},{2,3},{3,4},{4,5}}
a[2][3]a[0]-->a[0][0] a[0][1] a[0][2]a[1]-->a[1][0] a[1][1] a[1][2]a[2]-->a[2][0] a[2][1] a[2][2]int[] a = {3,1,2,5,4,2,0,8,9,6,7};//列印數組System.out.println(Arrays.toString(a));//數組排序Arrays.sort(a);
依次比較數組中兩個相鄰元素,如果第一個比第二個大,就交換位置,每一輪都會在數組後面產生一個最大的數字。public class demo01 {
public static void main(String[] args) {int[] a = {3,1,2,5,4,2,0,8,9,6,7};int[] result = sort(a); System.out.println(Arrays.toString(a)); }
public static int[] sort(int[] array) {int temp = 0;for (int i = 0; i < array.length-1; i++) {for (int j = 0; j < array.length-1-i; j++) {if(array[j+1]<array[j]) { temp = array[j];array[j]=array[j+1];array[j+1]=temp; } } }return array; }
}
該算法的時間複雜度為O(n2)稀疏數組(數組中大部分值相同):
編寫五子棋遊戲,設定棋盤(二維數組)中黑子位為1,白子位為2,空位為0
因為該二維數組中存在很多默認值0,記錄了很多沒有意義的數據,解決辦法是稀疏數組原始數組:0 0 0 22 0 0 150 11 0 0 0 17 00 0 0 -6 0 0 00 0 0 0 0 39 091 0 0 0 0 0 00 0 28 0 0 0 0
轉換為稀疏數組:0 6 7 81 0 3 222 0 6 153 1 1 114 1 5 175 2 3 -66 3 5 397 4 0 918 5 2 28版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本聲明。
本文連結:https://blog.csdn.net/BLU_111/article/details/108041827