一、??????? 什么是數組及其作用?
??? 定義:具有相同數據類型的一個集合
??? 作用:存儲連續的具有相同類型的數據
二、??????? java中如何聲明和定義數組
2.1?聲明和定義的語法:
?????? ?數據類型[ ] 數組名;( int[ ] nums ; )?? 或 數據類型 數組名[]; ?( int nums[ ] ;)
2.2? 為數組分配空間
數組名=new 數據類型[數組的長度]; ( nums=new int[5] ;)
2.3 ?聲明數組,同時分配空間
數據類型[]數組名= new 數據類型[數組的長度];
數據類型 數組名[]=new 數據類型[數組的長度];
????? ( int[ ] nums=new int[5] ;)?? ( int nums[ ]=new int[5] ;)
三、??????? 如何讀取數組中的元素—?通過下標(索引)來獲取
下標(索引)是從0開始,最大下標為??數組長度-1
下標越界:ArrayIndexOutOfBoundsException
int類型的數組,每個元素的默認值為0
String類型的數組,每個元素的默認值為null
???3.1?????????獲取單個元素的值
數據類型 變量名=數組名[下標];
?
?? 3.2?????循環讀取數組中的每個元素
數組的長度:數組名.length?屬性自動計算
for(int i=0;i<數組名.length ;i++){
??????????????????????? 數組名[i];
}
?
四。如何給數組中的元素賦值
方式1(賦予數組固定值):
????? ? 聲明數組,分配空間,并賦值
(數組的長度由值的個數決定)
數據類型? 數組名[]=new 數據類型[]{值1,值2…值n};
或
數據類型 []數組名={值1,值2…值n};
說明:[]中括號可以放在數組名前面或后面
方式2:動態的給數組賦值(從鍵盤中輸入)
????????????????????? Scanner? input = new Scanner(System.in);
????????????????????? for(int i=0;i<數組名.length ; i++){
????????????????????????????????? ?String類型的數組名[i]= input.next ();????????
????????????????????????????????? ?int類型的數組名[i]= input.nextInt ();?????????
????????????????????????????????? ?double類型的數組[i]=input.nextDouble();
}
?
五、數組排序問題
使用Arrays. sort(數組名);
實現對數組中的元素按升序或降序輸出
六、求最大值或最小值
實現思路:將數組中的第1個元素的值,假想成最大(小)值【賦值】;然后數組中的每個元素和假想的這個最大(小)數進行比較,如果數組中的某個元素的值,比最大(小)數要大(小),將該元素的值,保存到假想的最大(小)值對應的變量中
public class shuzu {public void D(int []num){int ha []=new int[10];for(int j=0;j<ha.length;j++){int index=(int)(Math.random()*100);ha[j]=index;System.out.print(ha[j]+" ");}int max=ha[0];int min=ha[0];for(int i=1;i<ha.length;i++){if(max<ha[i]){max=ha[i];}if(min>ha[i]){min=ha[i];}}System.out.println("\n"+"最大值為:"+max);System.out.println("最小值為:"+min);} }
八、求數組中最值的位置
1、??????????? 在循環的外面,定義變量k(賦值為0),用于保存最值的下標
2、??????????? 在循環中,比較找出最值的同時,給變量k賦值
public static void main(String [] args){Scanner input=new Scanner(System.in);char [] ha={'a','c','u','b','e','p','f','z'};System.out.print("原字符序列:");for (int i=0;i<ha.length;i++){System.out.print(ha[i]+" ");}Arrays.sort(ha);//對數組進行降序System.out.print("\n升序排列后:");for (int i=0;i<ha.length;i++){System.out.print(ha[i]+" ");}char he[]=new char[9];//創建一個新數組,進行儲存數據for (int i=0;i<ha.length;i++){he[i]=ha[i];}System.out.println("\n插入的字符是:");//輸入新數據char a=input.next().charAt(0);int index=he.length-1;//保存新數據插入的位置for (int i=0;i<he.length;i++){if(a<he[i]){//對數字進行判斷index=i;//找到新元素的下標位置break;}}for (int s=he.length-2;s>=index;s--){he[s+1]=he[s]; //將元素從后移動}he[index]=a;//將輸入的值賦到數組中System.out.println("\n插入的下標是:"+index);for (int k=0;k<he.length;k++){System.out.print(he[k]+" ");}}
八、斐波那契數列
1,1,2,3,5,8,13,21,34……求第20個數字的值?(使用循環)
規律:第i個 + 第(i+1)個 = 第(i+2)個
????? 步驟1:定義數組,數組長度為20
????????????????? int []nums=new int[20];
步驟2:根據規律,獲取第0個和第1個數的初值
????????????????? nums[0]=1;
????????????????? nums[1]=1;
步驟3:通過循環,給數組中的所有元素賦值
????????????????????????????? for ( int i=0;i<nums.length-2;i++){
????????????????????????????????????????? nums [i+2]=nums[i]+nums[i+1];
????????????????????????????? }
或
????????????????????????????? for(int i=2;i<nums.length;i++){
????????????????????????????????????????? nums[i]=nums[i-2]+nums[i-1];
????????????????????????????? }
步驟4:輸出nums[19]的值