-------android培訓、java培訓、期待與您交流! ----------
(1)存儲同一種數據類型的多個元素的容器。
(2)數組的特點:
每一個元素都有編號,從0開始編號。
(3)數組的格式:
A:數據類型[] 數組名 = new 數據類型[元素個數];
例:int[] arr = new int[3];
創建了一個int數組,arr。可以存儲3個int類型的元素。
和下面的定義的區別?
int arr[] = new int[3];
B:數據類型[] 數組名 = new 數據類型[]{元素1,元素2,...};
舉例:int[] arr = new int[]{1,2,3};
創建了一個int數組,arr。元素是1,2,3
C:數據類型[] 數組名 = {1,2,3};
舉例:int[] arr = {1,2,3};
創建了一個int數組,arr。元素是1,2,3
(4)Java對它所佔用的空間的內存分配:
A:棧 局部變量,在方法中定義的變量
B:堆 存儲的都是new出來的實體
C:方法區 存儲的都是方法
D:本地方法區 跟系統相關
E:寄存器 CPU使用,芯片運算
棧和堆的特點:
棧:棧中的數據必須初始化才能使用。當方法調用完畢,就從內存中消失。
堆:堆中的數據有默認值。
A:都有首地址
B:都有默認值
C:不在被引用指向的時候,會在jvm空閒的時候被回收。
(5)兩個問題:
A:數組越界
訪問了不存在的元素。
B:空指針
實體都沒有了,你還使用實體訪問元素。
(6)數組的常見操作:
數組有編號,它的操作都離不開編號。
java對數組還提供了一個屬性:length 用於獲取數組的長度
A:遍歷
public static void printArray(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(x==arr.length-1)
{
System.out.print(arr[x]);
}
else
{
System.out.print(arr[x]+",");
}
}
System.out.println();
}
B:獲取最值
a:最大值
public static int getMax(int[] arr)
{
int max = arr[0];
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
{
max = arr[x];
}
}
return max;
}
b:最小值
public static int getMin(int[] arr)
{
int min = arr[0];
for(int x=1; x<arr.length; x++)
{
if(arr[x]<min)
{
min = arr[x];
}
}
return min;
}
C:排序
a:選擇排序
原理:從0開始依次和後面的比較,小的往前放,第一次完畢後,最小值出現在了最小索引處。
代碼體現:
public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[y]<arr[x])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
b:冒泡排序
原理:相鄰的元素兩兩比較,大的往後放,第一次完畢後,最大值出現在了最大索引處。
代碼體現:
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-1-x; y++)
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
D:查找
a:普通查找
代碼體現:
public static int getIndex(int[] arr,int value)
{
int index = -1;
for(int x=0; x<arr.length; x++)
{
if(arr[x]==value)
{
index = x;
break;
}
}
return index;
}
b:二分查找(折半查找)
前提:數組必須有序(升序)。
代碼體現:
public static int getIndex(int[] arr,int value)
{
int min = 0;
int max = arr.length-1;
int mid = (max+min)/2;
while(arr[mid]!=value)
{
if(value>arr[mid])
{
min = mid + 1;
}
else if(value<arr[mid])
{
max = mid - 1;
}
if(min>max)
{
return -1;
}
mid = (max+min)/2;
}
return mid;
}