黑馬程序員---Java數(shù)組
關(guān)于Java中的數(shù)組? ? ? ? ? ? ? ? ? ?
一.
數(shù)組概念:同一種類型數(shù)據(jù)的集合。其實(shí)數(shù)組就是一個(gè)容器。用于存放;一系列(若干份)類型相同的數(shù)據(jù),數(shù)組一旦定義,長度不可變
數(shù)組的好處:可以自動(dòng)給數(shù)組中的元素從0開始編號,方便操作這些元素。
格式: 元素類型[] 數(shù)組名 = new 數(shù)組類型[元素個(gè)數(shù)或數(shù)組長度];? int [] arr = new int [5];或者int [] arr = new int[] {3,1,4,5,6};
//===========================================================
二.
數(shù)組中有一個(gè)屬性可以直接獲取到數(shù)組元素個(gè)數(shù), .length
?
public static int getMax(int [] arr){
??? int max = arr[0];
??? for(int i=1; i<arr.length; i++){
????????? if(max <a[i]){
?????????????? max = a[i];
}
}
??? return max;
}
?//===========================================================
三.
數(shù)組的常見操作
數(shù)組的定義:靜態(tài)和動(dòng)態(tài)
棧內(nèi)存
堆內(nèi)存
class Demo
{
public static void main (String args[])
{
//靜態(tài)定義
int[] arr = {23,4,67,198,3};
//int arr[] = {23,4,67,198,3};
//動(dòng)態(tài)
int arr2[] = new int[10]; //自動(dòng)初始化
int arr3[] = new int[]{1,3,5,7};//
//數(shù)組的訪問
int num3 = arr[2];
System.out.println(num3);
System.out.println(arr2[4]);
//為數(shù)組的元素賦值
arr2[2] =500;
System.out.println(arr2[2]);
//如何獲取數(shù)組的長度,每個(gè)數(shù)組都有一個(gè)固定的屬性是length
int len = arr.length;
System.out.println("數(shù)組arr的長度"+len);
//遍歷數(shù)組的元素,將元素依次取出來打印
for(int i=0; i<arr.length; i++)
System.out.println(arr[i]);
//????????? ? ??//如果數(shù)組為null,那么在訪問時(shí)會(huì)拋java.lang.NullPointerException空指針異常
// int[] arr4 = null ;
// System.out.println(arr4.length);
// 訪問數(shù)組時(shí)注意,角標(biāo)的取值范圍為0-length-1,
// 超出這個(gè)范圍就會(huì)拋java.lang.ArrayIndexOutOfBoundsException角標(biāo)越界異常
// System.out.println(arr[5])
System.out.println("---------------------------------");
listArr(arr);
}
//遍歷數(shù)組的元素,輸出
static void listArr(int[] arr)
{
//定義一個(gè)容器StringBuffer
StringBuffer sb = new StringBuffer();
for(int i=0; i<arr.length; i++)
sb.append(arr[i]+",");
sb.delete(sb.length()-1, sb.length());//不會(huì)遭成角標(biāo)越界
System.out.println(sb);
//System.out.println(arr[i]+",");
}
????????
????? ? //求一個(gè)數(shù)中的最大數(shù)
思路:
1.定義一個(gè)變量max用于記住最大數(shù),初始值為第一個(gè)元素
2.遍歷數(shù)組,讓每個(gè)元素都和max比較,如果比max大,將該元素的值給max
3.返回max
*/
????? ? static int getMaxNum(int[] arr)
????{
????? ? int max = arr[0];
????? ? for(int i=1; i<arr.length; i++)
????? ? {
????????? ? if(arr[i]>max)
????????????? ? max = arr[i];
????????}
????? ? return max;
????}
/* 交換數(shù)組的兩個(gè)元素
1.定義一個(gè)臨時(shí)變量temp,值為pos1位置的元素
2.讓pos1位置的元素的值等于pos2位置的元素
3.讓pos2位置的元素的值等于temp
*/
????? ? static void exchange(int[] arr, int pos1, int pos2)
????????{
????????? ? int temp = arr[pos1];
????????? ? arr[pos1] = arr[pos2];
????????? ? arr[pos2] = temp ;
? ??????}
????????
}
//====================================================
多維數(shù)組
二維數(shù)組:數(shù)組的每一個(gè)元素又是一個(gè)數(shù)組
class Demo
{
public static void main(String args[])
{
int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
System.out.println(arr.length);
//遍歷所有的元素
//遍歷整個(gè)數(shù)組
for(int i=0; i<arr.length; i++)
{
//遍歷每個(gè)元素(數(shù)組)
for(int j=0; j<arr[i].length; j++)
{
System.out.print(arr[i][j]+ " ");
}
}
//int arr1 [][] = new int[5][10];
int[][] arr2 = new int[3][];
arr2 [0] = new int[4];
arr2 [1] = new int[8];
arr2 [2] = new int[11];
}
}? ? ? ? ? ? ? ? ? ? ? ? ? ? ??