day09——數(shù)組
一、上節(jié)課回顧
1、函數(shù)、方法
1、概念:一段具有特定功能的代碼??梢员欢啻握{(diào)用并執(zhí)行。
? ? 可復用
2、作用:A:避免重復的代碼,增強程序的可讀性。B:增強程序的可維護性。
3、使用:
? ? step1:先聲明(定義),方法中的代碼是不執(zhí)行的。
? ? step2:調(diào)用這個方法。才會執(zhí)行這個方法中的代碼。調(diào)用幾次就執(zhí)行幾次。
4、位置:類里,其他的方法外。
5、語法:
? ? 聲明方法的語法:
[修飾符1,修飾符2...]返回值類型/void方法名(形式參數(shù)列表){
? ? 方法體;
? ? }
? ? publicstaticvoidmain(String[]args){}
?
? ? 調(diào)用方法的語法:
方法名(實際參數(shù));
注意點:實參一定嚴格匹配形參:按照順序一一匹配,順序,個數(shù),類型
6、參數(shù):當方法執(zhí)行的時候,需要接受外部的數(shù)據(jù)。
形式參數(shù):方法聲明的時候,用于接受外部傳入的數(shù)據(jù)。
實際參數(shù):調(diào)用方法的時候,向方法中的形式參數(shù)進行賦值,所傳入的具體的數(shù)據(jù)。
調(diào)用方法的時候:實參的數(shù)值要傳遞給形參,叫做傳參。(參數(shù)傳遞)
結(jié)論:方法中哪些數(shù)據(jù)不確定,就聲明為參數(shù),幾個數(shù)據(jù)不確定,就聲明幾個,多個參數(shù)使用逗號分隔開。
7、返回值:就是方法執(zhí)行結(jié)束后,返回給調(diào)用處的結(jié)果數(shù)據(jù)。
一個方法最多只能返回一個數(shù)據(jù),可以沒有,聲明方法的時候就寫void。
一個方法如果聲明了有返回值(非void),那么在方法中必須使用return語句將結(jié)果返回。
8、return語句的作用
A:將結(jié)果返回給調(diào)用處。
B:同時結(jié)束了該方法的執(zhí)行。
9、return語句的注意點:
A:如果一個方法聲明了有返回值,那么方法中必須使用return返回結(jié)果。
B:如果一個方法聲明了有返回值,那么return后的數(shù)據(jù)類型,必須和聲明的一致。如果聲明上沒有返回值,就是void,那么方法中可以使用return語句,但是不要返回數(shù)值,只是用于結(jié)束方法。
C:一個方法如果聲明了有返回值,假如方法中有分支語句,循環(huán)語句,要保證無論執(zhí)行那個分支,都要有return可以被執(zhí)行到。
D:return后面不要再寫語句:無法到達的語句。
10、遞歸方法:
概念:一個方法自己調(diào)用自己。
注意點:
? ? A:要有出口。
? ? B:要逐漸的向出口靠近。
11、總結(jié)
A:方法的三要素:返回值,方法名,參數(shù)列表。
B:返回值?一個方法執(zhí)行后的返回給調(diào)用處的結(jié)果。類型
C:參數(shù)?一個方法中哪個數(shù)據(jù)不確定,就設計為參數(shù)。
D:方法如何實現(xiàn)?根據(jù)需求分析,一個方法往往只完成一件事。
E:方法也是一種封裝。
class類名{
? ? 方法1的聲明(){}
main(){}//入口
方法2的聲明(){}
}
二、本節(jié)課內(nèi)容
2.1、遞歸函數(shù)
遞歸:英文單詞:Recursion
函數(shù)/方法,調(diào)用?
方法在有需要的位置調(diào)用即可。
一個方法中可以調(diào)用另一個方法。
一個方法中也可以自己調(diào)用自己。遞歸方法。
遞歸算法:
方法自己調(diào)用自己
要有出口,逐漸的向出口靠近
可能出現(xiàn)的問題:Exception in thread "main" java.lang.StackOverflowError,棧空間溢出異常。
2.2、數(shù)組
2.2.1 為什么使用數(shù)組
如果說程序中,需要存儲大量的相同類型的一組數(shù)據(jù),如果直接使用變量來進行存儲,每個變量只能存儲一個值,就需要大量的變量。
1、代碼過于臃腫
2、程序的可讀性差
3、數(shù)據(jù)維護較差
2.2.2 數(shù)組的概念
數(shù)組的概念:
就是一組相同數(shù)據(jù)類型的數(shù)據(jù)。內(nèi)存上是開辟的連續(xù)的內(nèi)存空間。
2.2.3 數(shù)組的特點?
1、定長。容量固定。數(shù)組一旦創(chuàng)建后,那么長度不能更改。(容量,長度,都是指存儲的數(shù)量)
2、存儲的數(shù)據(jù)類型必須都一致。
3、在內(nèi)存中空間連續(xù)挨個。
4、數(shù)組是引用類型的數(shù)據(jù),存在棧和堆的地址引用關(guān)系。
?
Java中:兩大數(shù)據(jù)類型
? ? 基本:4類8種
? ? 引用:數(shù)組,對象,集合。。。。
2.2.4 數(shù)組的使用
step1:先創(chuàng)建數(shù)組
step2:使用數(shù)組:存儲數(shù)據(jù),訪問數(shù)據(jù)。
2.2.5 數(shù)組的語法
創(chuàng)建數(shù)組的語法:
? ? 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[長度、容量、個數(shù)];
? ? 數(shù)據(jù)類型 數(shù)組名[] = new 數(shù)據(jù)類型[長度];//也可以
使用的語法:
? ? 數(shù)組名[index],操作數(shù)組
? ? index:因為一個數(shù)組存儲了多個數(shù)據(jù)(也叫元素),每個元素都有一個下標,也叫索引,index。理解起來就是給每個數(shù)據(jù)排個編號,固定從0開始,0,1,2,3,4.。。。到長度減1。
? ? 數(shù)組的下標不能超出這個范圍。否則就會下標越界:java.lang.ArrayIndexOutOfBoundsException
2.2.6 內(nèi)存分析(擴展)
內(nèi)存:存儲數(shù)據(jù)
A:棧,存放的是基本數(shù)據(jù)類型的變量,以及引用類型變量的引用。
? ? 特點:函數(shù)中的變量所占用的空間,執(zhí)行之后就會銷毀。
B:堆,存放的是new出來的東西。
? ? 特點:執(zhí)行之后,堆里存儲的內(nèi)容(對象等),會被標記為垃圾,但是不會立即被銷毀,而是等待系統(tǒng)的垃圾回收機制來回收(GC)。
? ? JVM,GC(Grabage Collection)
2.2.7 使用循環(huán)遍歷數(shù)組
1、遍歷:依次訪問數(shù)組中每個元素。可以賦值,可以取值。
2、因為操作數(shù)組,就是數(shù)組名字配合下標,而下標固定都是從0開始,到長度減1。
for(inti=0;i<arr2.length;i++){
? ? System.out.println(arr2[i]);
}
2.2.8 數(shù)組的長度
獲取數(shù)組的長度:length,數(shù)組的一個屬性。
數(shù)組名.length--->獲取這個數(shù)組的長度。
三、總結(jié)
1、遞歸方法:了解
一個方法自己調(diào)用自己,
遞歸方法要有出口,逐漸的向出口靠近。
2、數(shù)組:
概念:內(nèi)存中連續(xù)的空間。存儲一組相同的數(shù)據(jù)類型。
使用:
語法:
內(nèi)存分析:
遍歷:
長度: