STAGE1-基礎(chǔ)總結(jié)

1.數(shù)據(jù)類型

數(shù)值型

??? 1)整

byte? 1字節(jié)

short? 2字節(jié)

int????? 4字節(jié)

long??? 8字節(jié)

???? 2)浮點(diǎn)

float???? 4

double???? 8


布爾型

boolean


字符型

char

Java的字符采用Unicode編碼衅澈,其中前128個(gè)字符編碼與ASCII編碼兼容。每個(gè)字符數(shù)據(jù)類型占2個(gè)字符火焰,可儲(chǔ)存的字符范圍從\u0000到\uFFFF劲装。


聲明:數(shù)據(jù)類型 數(shù)據(jù)名(= 值);

2.數(shù)組昌简、接口占业、類等引用數(shù)據(jù)類型

引用類型一般都是通過(guò)new關(guān)鍵字創(chuàng)建對(duì)象,然后把這個(gè)對(duì)象賦予給相應(yīng)的變量纯赎,最常用的引用類型是String類型谦疾,它也比較特殊,可以直接通過(guò)關(guān)復(fù)鍵字new來(lái)創(chuàng)建對(duì)象犬金,也可以通過(guò)字符串直制接賦值念恍。

數(shù)組:一維、多維

?? 1)聲明(靜態(tài)晚顷、動(dòng)態(tài))

數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];

數(shù)據(jù)類型[]數(shù)組名 = {..., ...., ..., ..., };

??? 2) 對(duì)于數(shù)組變量來(lái)說(shuō)峰伙,他并不需要初始化,我們常說(shuō)的初始化其實(shí)是初始化數(shù)組對(duì)象而非數(shù)組變量该默,有時(shí)候我們不進(jìn)行初始化,而讓數(shù)組變量指向一個(gè)有效的數(shù)組對(duì)象匣摘,數(shù)組也可以使用,eg:

int[] a = {0,1,2,3,4};

int[] b;b = a;

System.out.println(b[1]);// 輸出結(jié)果為 1

b[1] =99;

System.out.println(a[1]);// 輸出結(jié)果為 99

?? 3)數(shù)組的增強(qiáng)for循環(huán)

for(聲明語(yǔ)句:表達(dá)式){// 代碼}// 冒號(hào)可以理解為"in"

3.選擇與循環(huán)

?? 1)switch

?? 2)do...while

??? while ....

??? 3)if

????? if...else

????? if....else if

???? 4)break&continue

???? 5)嵌套


4.方法

Java方法是語(yǔ)句的集合音榜,它們?cè)谝黄饒?zhí)行一個(gè)功能囊咏。

方法是解決一類問(wèn)題的步驟的有序組合

方法包含于類或?qū)ο笾?/p>

方法在程序中被創(chuàng)建塔橡,在其他地方被引用

方法的優(yōu)點(diǎn)

1. 使程序變得更簡(jiǎn)短而清晰梅割。

2. 有利于程序維護(hù)户辞。

3. 可以提高程序開發(fā)的效率癞谒。

4. 提高了代碼的重用性。

方法的命名規(guī)則

1.方法的名字的第一個(gè)單詞應(yīng)以小寫字母作為開頭双仍,后面的單詞則用大寫字母開頭寫,不使用連接符朱沃。例如:addPerson茅诱。

2.下劃線可能出現(xiàn)在 JUnit 測(cè)試方法名稱中用以分隔名稱的邏輯組件。一個(gè)典型的模式是:test<MethodUnderTest>_<state>翎卓,例如testPop_emptyStack摆寄。


方法包含一個(gè)方法頭和一個(gè)方法體。下面是一個(gè)方法的所有部分:

修飾符:修飾符椭迎,這是可選的,告訴編譯器如何調(diào)用該方法缴阎。定義了該方法的訪問(wèn)類型简软。

返回值類型 :方法可能會(huì)返回值。returnValueType 是方法返回值的數(shù)據(jù)類型建炫。有些方法執(zhí)行所需的操作,但沒(méi)有返回值肛跌。在這種情況下,returnValueType 是關(guān)鍵字void转唉。

方法名:是方法的實(shí)際名稱稳捆。方法名和參數(shù)表共同構(gòu)成方法簽名。

參數(shù)類型:參數(shù)像是一個(gè)占位符乔夯。當(dāng)方法被調(diào)用時(shí)砖织,傳遞值給參數(shù)侧纯。這個(gè)值被稱為實(shí)參或變量甲脏。參數(shù)列表是指方法的參數(shù)類型、順序和參數(shù)的個(gè)數(shù)剃幌。參數(shù)是可選的,方法可以不包含任何參數(shù)牍白。

方法體:方法體包含具體的語(yǔ)句抖棘,定義該方法的功能。

4.重寫&重載

1)重寫是子類對(duì)父類的允許訪問(wèn)的方法的實(shí)現(xiàn)過(guò)程進(jìn)行重新編寫, 返回值和形參都不能改變最岗。即外殼不變朝捆,核心重寫

重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為芙盘。

也就是說(shuō)子類能夠根據(jù)需要實(shí)現(xiàn)父類的方法。

重寫方法不能拋出新的檢查異澈牵或者比被重寫方法申明更加寬泛的異常驮樊。例如:

父類的一個(gè)方法申明了一個(gè)檢查異常 IOException片酝,但是在重寫這個(gè)方法的時(shí)候不能拋出 Exception 異常挖腰,因?yàn)?Exception 是 IOException 的父類,只能拋出 IOException 的子類異常。

方法的重寫規(guī)則

參數(shù)列表必須完全與被重寫方法的相同鞠鲜。

返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的派生類(java5 及更早版本返回類型要一樣贤姆,java7 及更高版本可以不同)。

訪問(wèn)權(quán)限不能比父類中被重寫的方法的訪問(wèn)權(quán)限更低坐漏。例如:如果父類的一個(gè)方法被聲明為 public碧信,那么在子類中重寫該方法就不能聲明為 protected。

父類的成員方法只能被它的子類重寫砰碴。

聲明為 final 的方法不能被重寫。

聲明為 static 的方法不能被重寫趁尼,但是能夠被再次聲明。

子類和父類在同一個(gè)包中酥泞,那么子類可以重寫父類所有方法啃憎,除了聲明為 private 和 final 的方法。

子類和父類不在同一個(gè)包中凡人,那么子類只能夠重寫父類的聲明為 public 和 protected 的非 final 方法叹阔。

重寫的方法能夠拋出任何非強(qiáng)制異常,無(wú)論被重寫的方法是否拋出異常耳幢。但是欧啤,重寫的方法不能拋出新的強(qiáng)制性異常启上,或者比被重寫方法聲明的更廣泛的強(qiáng)制性異常,反之則可以倒慧。

構(gòu)造方法不能被重寫包券。

如果不能繼承一個(gè)方法纫谅,則不能重寫這個(gè)方法付秕。

2)重載(overloading) 是在一個(gè)類里面侍郭,方法名字相同,而參數(shù)不同亮元。返回類型可以相同也可以不同。

每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無(wú)二的參數(shù)類型列表有滑。

最常用的地方就是構(gòu)造器的重載嵌削。

重載規(guī)則:

被重載的方法必須改變參數(shù)列表(參數(shù)個(gè)數(shù)或類型不一樣);

被重載的方法可以改變返回類型苛秕;

被重載的方法可以改變?cè)L問(wèn)修飾符;

被重載的方法可以聲明新的或更廣的檢查異常吼驶;

方法能夠在同一個(gè)類中或者在一個(gè)子類中被重載店煞。

無(wú)法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。


6.異常


7.排序

1)冒泡排序

最簡(jiǎn)單的一種排序算法酒请。假設(shè)長(zhǎng)度為n的數(shù)組arr羞反,要按照從小到大排序布朦。則冒泡排序的具體過(guò)程可以描述為:首先從數(shù)組的第一個(gè)元素開始到數(shù)組最后一個(gè)元素為止是趴,對(duì)數(shù)組中相鄰的兩個(gè)元素進(jìn)行比較,如果位于數(shù)組左端的元素大于數(shù)組右端的元素唆途,則交換這兩個(gè)元素在數(shù)組中的位置掸驱,此時(shí)數(shù)組最右端的元素即為該數(shù)組中所有元素的最大值。接著對(duì)該數(shù)組剩下的n-1個(gè)元素進(jìn)行冒泡排序,直到整個(gè)數(shù)組有序排列图筹。算法的時(shí)間復(fù)雜度為O(n^2)。

2)選擇排序

嚴(yán)蔚敏版《數(shù)據(jù)結(jié)構(gòu)》中對(duì)選擇排序的基本思想描述為:每一趟在n-i+1(i=1,2,...,n-1)個(gè)記錄中選取關(guān)鍵字最小的記錄作為有序序列中第i個(gè)記錄扣溺。具體來(lái)說(shuō)锥余,假設(shè)長(zhǎng)度為n的數(shù)組arr痢掠,要按照從小到大排序,那么先從n個(gè)數(shù)字中找到最小值min1足画,如果最小值min1的位置不在數(shù)組的最左端(也就是min1不等于arr[0]),則將最小值min1和arr[0]交換医舆,接著在剩下的n-1個(gè)數(shù)字中找到最小值min2象缀,如果最小值min2不等于arr[1],則交換這兩個(gè)數(shù)字霞怀,依次類推,直到數(shù)組arr有序排列里烦。算法的時(shí)間復(fù)雜度為O(n^2)。

3) 插入排序

插入排序的基本思想就是將無(wú)序序列插入到有序序列中胁黑。例如要將數(shù)組arr=[4,2,8,0,5,1]排序,可以將4看做是一個(gè)有序序列(圖中用藍(lán)色標(biāo)出)漂洋,將[2,8,0,5,1]看做一個(gè)無(wú)序序列力喷。無(wú)序序列中2比4小,于是將2插入到4的左邊贝咙,此時(shí)有序序列變成了[2,4]拂募,無(wú)序序列變成了[8,0,5,1]。無(wú)序序列中8比4大陈症,于是將8插入到4的右邊,有序序列變成了[2,4,8],無(wú)序序列變成了[0,5,1]趴腋。以此類推论咏,最終數(shù)組按照從小到大排序。該算法的時(shí)間復(fù)雜度為O(n^2)穿剖。

4卦溢、希爾排序

希爾排序(Shell's Sort)在插入排序算法的基礎(chǔ)上進(jìn)行了改進(jìn),算法的時(shí)間復(fù)雜度與前面幾種算法相比有較大的改進(jìn)单寂。其算法的基本思想是:先將待排記錄序列分割成為若干子序列分別進(jìn)行插入排序,待整個(gè)序列中的記錄"基本有序"時(shí)蘸劈,再對(duì)全體記錄進(jìn)行一次直接插入排序尊沸。

5贤惯、快速排序

快速排序的基本思想是:通過(guò)一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分孵构,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小烟很,則可分別對(duì)這兩部分記錄繼續(xù)進(jìn)行排序,已達(dá)到整個(gè)序列有序恤筛。一趟快速排序的具體過(guò)程可描述為:從待排序列中任意選取一個(gè)記錄(通常選取第一個(gè)記錄)作為基準(zhǔn)值芹橡,然后將記錄中關(guān)鍵字比它小的記錄都安置在它的位置之前,將記錄中關(guān)鍵字比它大的記錄都安置在它的位置之后林说。這樣,以該基準(zhǔn)值為分界線蝌数,將待排序列分成的兩個(gè)子序列度秘。

一趟快速排序的具體做法為:設(shè)置兩個(gè)指針low和high分別指向待排序列的開始和結(jié)尾饵撑,記錄下基準(zhǔn)值baseval(待排序列的第一個(gè)記錄),然后先從high所指的位置向前搜索直到找到一個(gè)小于baseval的記錄并互相交換垢乙,接著從low所指向的位置向后搜索直到找到一個(gè)大于baseval的記錄并互相交換语卤,重復(fù)這兩個(gè)步驟直到low=high為止。

6钮孵、歸并排序

“歸并”的含義是將兩個(gè)或兩個(gè)以上的有序序列組合成一個(gè)新的有序表眼滤。假設(shè)初始序列含有n個(gè)記錄,則可以看成是n個(gè)有序的子序列诅需,每個(gè)子序列的長(zhǎng)度為1荧库,然后兩兩歸并分衫,得到[n/2]([x]表示不小于x的最小整數(shù))個(gè)長(zhǎng)度為2(或者是1)的有序子序列料睛,再兩兩歸并。如此重復(fù)屎勘,直到得到一個(gè)長(zhǎng)度為n的有序序列為止居扒。這種排序方法稱為2-路歸并排序。

7喜喂、堆排序

8.查找

1)順序查找

說(shuō)明:順序查找適合于存儲(chǔ)結(jié)構(gòu)為順序存儲(chǔ)或鏈接存儲(chǔ)的線性表。

基本思想:順序查找也稱為線形查找照弥,屬于無(wú)序查找算法进副。從數(shù)據(jù)結(jié)構(gòu)線形表的一端開始,順序掃描影斑,依次將掃描到的結(jié)點(diǎn)關(guān)鍵字與給定值k相比較,若相等則表示查找成功片迅;若掃描結(jié)束仍沒(méi)有找到關(guān)鍵字等于k的結(jié)點(diǎn)皆辽,表示查找失敗。

復(fù)雜度分析:

查找成功時(shí)的平均查找長(zhǎng)度為:(假設(shè)每個(gè)數(shù)據(jù)元素的概率相等) ASL = 1/n * (1+2+3+…+n) = (n+1)/2 ;

當(dāng)查找不成功時(shí)驱闷,需要n+1次比較,時(shí)間復(fù)雜度為O(n);

所以遗嗽,順序查找的時(shí)間復(fù)雜度為O(n)。

2.)二分查找

說(shuō)明:元素必須是有序的都弹,如果是無(wú)序的則要先進(jìn)行排序操作匙姜。

基本思想:也稱折半查找,屬于有序查找算法氮昧。用給定值k先與中間結(jié)點(diǎn)的關(guān)鍵字比較,中間結(jié)點(diǎn)把線形表分成兩個(gè)子表咪辱,若相等則查找成功椎组;若不相等,再根據(jù)k與該中間結(jié)點(diǎn)關(guān)鍵字的比較結(jié)果確定下一步查找哪個(gè)子表寸癌,這樣遞歸進(jìn)行蒸苇,直到查找到或查找結(jié)束發(fā)現(xiàn)表中沒(méi)有這樣的結(jié)點(diǎn)。

復(fù)雜度分析:最壞情況下味咳,關(guān)鍵詞比較次數(shù)為log2(n+1)氛什,且期望時(shí)間復(fù)雜度為O(log2n)匪凉;

注:折半查找的前提條件是需要有序表順序存儲(chǔ),對(duì)于靜態(tài)查找表贸铜,一次排序后不再變化聂受,折半查找能得到不錯(cuò)的效率。但對(duì)于需要頻繁執(zhí)行插入或刪除操作的數(shù)據(jù)集來(lái)說(shuō)蛋济,維護(hù)有序的排序會(huì)帶來(lái)不小的工作量,那就不建議使用镜悉。——《大話數(shù)據(jù)結(jié)構(gòu)》

?3)分塊查找

分塊查找又稱索引順序查找医瘫,它是順序查找的一種改進(jìn)方法。

算法思想:將n個(gè)數(shù)據(jù)元素"按塊有序"劃分為m塊(m ≤ n)稼锅。每一塊中的結(jié)點(diǎn)不必有序僚纷,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關(guān)鍵字都必須小于第2塊中任一元素的關(guān)鍵字剩晴;而第2塊中任一元素又都必須小于第3塊中的任一元素,……

算法流程:

- step1 先選取各塊中的最大關(guān)鍵字構(gòu)成一個(gè)索引表赞弥;

- step2 查找分兩個(gè)部分:先對(duì)索引表進(jìn)行二分查找或順序查找绽左,以確定待查記錄在哪一塊中;然后拼窥,在已確定的塊中用順序法進(jìn)行查找鲁纠。

9其他

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鳍寂,一起剝皮案震驚了整個(gè)濱河市改含,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迄汛,老刑警劉巖捍壤,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鞍爱,居然都是意外死亡鹃觉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門睹逃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盗扇,“玉大人,你說(shuō)我怎么就攤上這事×屏ィ” “怎么了躬柬?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵允青,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我史汗,道長(zhǎng)瓷蛙,這世上最難降的妖魔是什么戈毒? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮食听,結(jié)果婚禮上樱报,老公的妹妹穿的比我還像新娘迹蛤。我一直安慰自己笤受,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著落包,像睡著了一般咐蝇。 火紅的嫁衣襯著肌膚如雪有序。 梳的紋絲不亂的頭發(fā)上旭寿,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天后室,我揣著相機(jī)與錄音岸霹,去河邊找鬼云芦。 笑死舅逸,一個(gè)胖子當(dāng)著我的面吹牛琉历,可吹牛的內(nèi)容都是我干的旗笔。 我是一名探鬼主播蝇恶,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼授舟!你這毒婦竟也來(lái)了释树?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扫尺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后姑曙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伤靠,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迹鹅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弟蚀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昧绣。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奏纪,死狀恐怖斩启,靈堂內(nèi)的尸體忽然破棺而出兔簇,到底是詐尸還是另有隱情,我是刑警寧澤狸窘,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站陋气,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏议慰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颁督。 院中可真熱鬧,春花似錦吠裆、人聲如沸诵棵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忠蝗。三九已至,卻和暖如春闽撤,著一層夾襖步出監(jiān)牢的瞬間哟旗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工剔宪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留感帅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓豺撑,卻偏偏與公主長(zhǎng)得像聪轿,于是被迫代替她去往敵國(guó)和親屹电。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359