零碎



標(biāo)識(shí)符
關(guān)鍵字
運(yùn)算符號(hào)
- 邏輯運(yùn)算符
執(zhí)行順序& if else & switch
- 順序執(zhí)行
- 分支執(zhí)行
- 循環(huán)執(zhí)行
- if else
- switch:case標(biāo)簽:
類型為int,char,short,byte的常量表達(dá)式
枚舉常量
javaSE7開(kāi)始,case標(biāo)簽還可以是字符串字面量
數(shù)據(jù)類型
基本數(shù)據(jù)類型-8種
自定義數(shù)據(jù)類型:class,interface,enum

String
String拼接可以用“+”直接拼接,也可以用concat方法,concat的底層結(jié)構(gòu)是StringBuilder。如果字符串很長(zhǎng)的話我們考慮用StringBuffer和StringBuilder。




StringBuffer和StringBuilder
和 String 類不同的是,StringBuffer 和 StringBuilder 類的對(duì)象能夠被多次的修改,并且不產(chǎn)生新的未使用對(duì)象。StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問(wèn))。由于 StringBuilder 相較于 StringBuffer 有速度優(yōu)勢(shì),所以多數(shù)情況下建議使用 StringBuilder 類。然而在應(yīng)用程序要求線程安全的情況下,則必須使用 StringBuffer 類。
使用+號(hào)拼接字符串,每次拼接都會(huì)創(chuàng)建一個(gè)新的字符串,占用內(nèi)容多,效率低。

數(shù)組Arrays
同樣,得先看源碼


只有第三種方法支持直接創(chuàng)建一個(gè)新的數(shù)組返回

獲取數(shù)組長(zhǎng)度length,是一個(gè)屬性



二維數(shù)組

數(shù)組相關(guān)的算法



遞歸(Recursion):
就是在方法里面調(diào)用自己。
遞是傳遞給自己
歸是退出條件,在某些條件符合的時(shí)候,停止調(diào)用自己。如果沒(méi)有退出條件會(huì)出現(xiàn)死循環(huán),程序上會(huì)出現(xiàn)java.lang.StarkOverflowError這一異常。
遞歸算法例子:
-
計(jì)算階乘
老和尚講故事 -
遞歸
遞歸 -
斐波那契數(shù)列
斐波那契數(shù)列 青蛙跳臺(tái)階
一個(gè)臺(tái)階總共有n級(jí),如果一次可以跳1級(jí),也可以跳2級(jí)。求總共有多少總跳法,并分析算法的時(shí)間復(fù)雜度。
我們把n級(jí)臺(tái)階時(shí)的跳法看成是n的函數(shù),記為f(n)。當(dāng)n>2時(shí),第一次跳的時(shí)候就有兩種不同的選擇:一是第一次只跳1級(jí),此時(shí)跳法數(shù)目等于后面剩下的n-1級(jí)臺(tái)階的跳法數(shù)目,即為f(n-1);另外一種選擇是第一次跳2級(jí),此時(shí)跳法數(shù)目等于后面剩下的n-2級(jí)臺(tái)階的跳法數(shù)目,即為f(n-2)。因此n級(jí)臺(tái)階時(shí)的不同跳法的總數(shù)f(n)=f(n-1)+(f-2)。
分析到這里,應(yīng)該都能看出這就是我們熟悉的斐波那契數(shù)列。題目2:一個(gè)臺(tái)階總共有n級(jí),如果一次可以跳1級(jí),也可以跳2級(jí)......它也可以跳上n級(jí)。此時(shí)該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法?
分析:用Fib(n)表示青蛙跳上n階臺(tái)階的跳法數(shù),青蛙一次性跳上n階臺(tái)階的跳法數(shù)1(n階跳),設(shè)定Fib(0) = 1;
當(dāng)n = 1 時(shí), 只有一種跳法,即1階跳:Fib(1) = 1;
當(dāng)n = 2 時(shí), 有兩種跳的方式,一階跳和二階跳:Fib(2) = Fib(1) + Fib(0) = 2;
當(dāng)n = 3 時(shí),有三種跳的方式,第一次跳出一階后,后面還有Fib(3-1)中跳法; 第一次跳出二階后,后面還有Fib(3-2)中跳法;第一次跳出三階后,后面還有Fib(3-3)中跳法 Fib(3) = Fib(2) + Fib(1)+Fib(0)=4;
當(dāng)n = n 時(shí),共有n種跳的方式,第一次跳出一階后,后面還有Fib(n-1)中跳法; 第一次跳出二階后,后面還有Fib(n-2)中跳法..........................第一次跳出n階后,后面還有 Fib(n-n)中跳法.
Fib(n) = Fib(n-1)+Fib(n-2)+Fib(n-3)+..........+Fib(n-n)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-1) 又因?yàn)镕ib(n-1)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-2) 兩式相減得:Fib(n)-Fib(n-1)=Fib(n-1) =====》 Fib(n) = 2*Fib(n-1) n >= 2 遞歸等式如下:





