遞歸:本身調(diào)用本身,要有一個出口(效率慢梁沧,很少使用)
F1=1檀何,F(xiàn)2=1? Fn=Fn-1 +Fn-2(n>2)
public static int f(int n){
if(n==1||n==2){
return 1;
}else{
return f(n-1)+f(n-2);
}
}
數(shù)組
(類似容器,引用類型,不可變大衅导)
定義并初始化數(shù)組:int[] a=new int[n] ? //n表示數(shù)組可以存儲多少個數(shù)據(jù)
數(shù)組一旦聲明成一種類型栓辜,就不能裝其它類型
注:聲明時不可指定長度 ?int[n]a,這樣 是錯誤的
動態(tài)初始化(定義,分配空間垛孔,賦值分開進行)
不賦值boolean默認false藕甩,引用類型默認null,char默認‘\u0000’,float為0.0f周荐,double為0.0D狭莱,long為0l,byte short int為0):
Date[] days; ?days=new Date [3]; ?days[i]=new Date();
靜態(tài)初始化(定義羡藐,分配空間贩毕,賦值同時進行)
數(shù)據(jù)類型[]變量名={值1,值2仆嗦,....}? 或者? ? 數(shù)據(jù)類型[]變量名=new 數(shù)據(jù)類型[]{值1辉阶,值2,....}
Date[2] days={new Date()瘩扼,new Date()}谆甜; ? ?//數(shù)組裝對象時,裝的是它的引用
匿名數(shù)組 ?new int[]{1,2,3,4} ? ? 可以在不創(chuàng)建變量的情況下重新初始化一個數(shù)組
a=new int[]{1,2,3,4} ? ?注:里面不能寫數(shù)組長度
注:1.數(shù)組內(nèi)保存的數(shù)據(jù)類型必須一直集绰,同時與聲明時的類型相同
? ?2.數(shù)組的數(shù)據(jù)類型是 ? ? ? 數(shù)據(jù)類型[ ]
數(shù)組長度:數(shù)組.length ? ? ?此時length是一個屬性
查找:(1)順序查找(數(shù)組內(nèi)順序沒排好)
思路:按照數(shù)組角標一個一個找规辱,如果找到了返回索引
? ? ? ? ?(2)二分法查找(順序必須是排好的):如果start<=end就進行循環(huán)
數(shù)組的工具類:(Arrays)
(1)數(shù)組的拷貝int [] b=a; ? //此時a,b兩個變量指向同一個數(shù)組栽燕,兩者會相互影響
若想指向不同數(shù)組 ? int[] copya=Arrays.copyOf(想拷貝的數(shù)組罕袋,長度)
這個方法也可以用來增加原有數(shù)組的長度 ? ?a=Arrays.copyOf(a,a.length*2)
(2)數(shù)組排序
Arrays.sort(type[] a) ? ? ? ? ?實現(xiàn)快速排序(如果想要對象數(shù)組實現(xiàn)快速排序碍岔,對象必須實現(xiàn)comparable接口浴讯,重寫compareTo方法,用Double的compare()方法比較基本類型數(shù)組自動實現(xiàn)了接口)
(3)輸出數(shù)組: Arrays.toString(arr)? //整個輸出數(shù)組,以字符串形式輸出 ? ?
(4)二分法查找 ?Arrays.binarySearch(int[]arr,int num)
(5)填充元素? ? ? Arrays.fill( a1, value );? //填充a1數(shù)組中的每個元素都是value蔼啦,常用布爾型數(shù)組填充榆纽。
double max(double...d)表示可變數(shù)量集合,參數(shù)的數(shù)量可變捏肢,把這些數(shù)量不固定的參數(shù)放到數(shù)組d中奈籽,可以通過數(shù)組的訪問方式訪問它。
double ?f(String s,double d)可變參數(shù)必須放到后邊鸵赫,如果放在前面的話衣屏,傳參的時候虛擬機不確定后邊的參數(shù)應(yīng)該傳給可變參數(shù)還是第二個參數(shù)
例子: double f(1,2,3,"abc")虛擬機不確定“abc”是應(yīng)該傳給到可變參數(shù)中,還是傳給第二個參數(shù)
一個方法只能有一個可變參數(shù)奉瘤,原理同上
二維數(shù)組(先明確長度再賦值勾拉,從高緯度到低緯度生命煮甥,從做到右)
int a[] []=new int[i][]; ? ? ? ? ? ? //a.length ?一緯長 ? ? a[i].length ? ?二維長
a[i]=new int[j]; ? ?//i個一緯,每個一緯中有j個二維藕赞,i表行成肘,j表列