Java基礎(chǔ)


零碎

保留幾位小數(shù)
掃描儀
系統(tǒng)當(dāng)前時(shí)間

標(biāo)識(shí)符


關(guān)鍵字


運(yùn)算符號(hào)

  • 邏輯運(yùn)算符

執(zhí)行順序& if else & switch

  • 順序執(zhí)行
  • 分支執(zhí)行
  • 循環(huán)執(zhí)行
  1. if else
  2. 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

Paste_Image.png

String

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


String拼接
字符串替換
Paste_Image.png
Paste_Image.png

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

同樣,得先看源碼

源碼,很多,沒(méi)截完
數(shù)組的3種創(chuàng)建方式

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

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

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

length and 遍歷
for each 也可以,前面的靈活一點(diǎn)
排序

二維數(shù)組

二維數(shù)組


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

簡(jiǎn)單算法
Paste_Image.png
Paste_Image.png

遞歸(Recursion):

就是在方法里面調(diào)用自己。
遞是傳遞給自己
歸是退出條件,在某些條件符合的時(shí)候,停止調(diào)用自己。如果沒(méi)有退出條件會(huì)出現(xiàn)死循環(huán),程序上會(huì)出現(xiàn)java.lang.StarkOverflowError這一異常。

遞歸算法例子:

  1. 計(jì)算階乘


    老和尚講故事
  2. 遞歸


    遞歸
  3. 斐波那契數(shù)列


    斐波那契數(shù)列
  4. 青蛙跳臺(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ù)列。

  5. 題目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 遞歸等式如下:


Paste_Image.png
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] StringBuffer類 StringBuffer類概述及其構(gòu)造方法 StringBuffer類概述...
    lutianfei閱讀 534評(píng)論 0 1
  • Java相關(guān) 1.靜態(tài)內(nèi)部類、內(nèi)部類、匿名內(nèi)部類,為什么內(nèi)部類會(huì)持有外部類的引用?持有的引用是this?還是其它?...
    李成新閱讀 280評(píng)論 0 0
  • 這個(gè)系列面試題主要目的是幫助你拿輕松到offer,同時(shí)還能開(kāi)個(gè)好價(jià)錢。只要能夠搞明白這個(gè)系列的絕大多數(shù)題目,在面試...
    獨(dú)念白閱讀 406評(píng)論 0 3
  • 整理了一些相關(guān)面試題,留作查閱之用。 1、面向?qū)ο筇卣鳎豪^承 封裝 多態(tài) 2、方法重載:方法名要一樣,但是參數(shù)類型...
    dreamkong閱讀 2,134評(píng)論 0 10
  • 1、一個(gè)".java"源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制?答:可以有多個(gè)類,但只能有一個(gè)publ...
    岳小川閱讀 1,023評(píng)論 0 2

友情鏈接更多精彩內(nèi)容