2020-01-19

day4將循環(huán)結構具體的闡述了一遍,for循環(huán),while循環(huán),dowhile循

for(初始化表達式;boolean;循環(huán)后表達式){//執(zhí)行語句}=========執(zhí)行流程:先執(zhí)行初始化語句,然后執(zhí)行判斷條件,看其返回值是true還是false,true就執(zhí)行循環(huán)體,false就結束循環(huán),循環(huán)體執(zhí)行到最后,執(zhí)行循環(huán)后表達式,再次執(zhí)行判斷條件,重復第二步========while語句一般看做是for循環(huán)的簡寫格式========dowhile語句無論條件是否成立,循環(huán)體都會執(zhí)行一次

循環(huán)總結:dowhile循環(huán)至少執(zhí)行一次循環(huán)體,而for,while循環(huán)必須先判斷條件是否成立,然后決定是否執(zhí)行循環(huán)體語句-----如果想在循環(huán)結束后繼續(xù)使用控制條件的那個變量,用while語句比較好,因為while語句我們定義變量的時候在循環(huán)體外面定義變量,注意控制條件,避免死循環(huán)--while(true)--for(;;) --但是后來我們一般也利用死循環(huán)這一個特點來做循環(huán)

關鍵字的作用:????

我們這里說的關鍵字知道是三個,return,break,continue-------------return--可以寫在方法體的任意地方,是和方法打交道的,結束整個方法,之后的代買全部都不在執(zhí)行-----break---用在循環(huán)中或者switch語句中,終止并跳出循環(huán)或者結束switch語句------continue是終止本次循環(huán),繼續(xù)下次循環(huán),這次循環(huán)中continue之后的代碼都不在執(zhí)行(break和continue可用于父循環(huán),給父循環(huán)起別名)

循環(huán)嵌套

就是外面一個循環(huán)里面嵌套著一個循環(huán)



day5

說到了數(shù)組,數(shù)組的基本操作,數(shù)組可能遇到的常見問題,內(nèi)存圖,以及二分查找,冒泡排序

數(shù)組

數(shù)組的概念:數(shù)組是一個容器,可以存儲同一種數(shù)據(jù)類型多個元素的集合,它既可以存放基本數(shù)據(jù)類型,也可以存放引用數(shù)據(jù)類型,是java中唯一的底層容器

數(shù)組的初始化:就是為數(shù)組開辟連續(xù)的內(nèi)存空間,并為每個數(shù)組元素賦值,初始化分為靜態(tài)初始化和動態(tài)初始化;靜態(tài)初始化指定內(nèi)容,數(shù)組的長度由jvm自行判斷,而動態(tài)初始化是指定數(shù)組的長度,數(shù)組中的元素有jvm給出默認值

注意事項:數(shù)組的長度在創(chuàng)建的時候就固定了,中途無法改變;數(shù)組是靠角標定位元素,并且角標值從0開始,數(shù)組屬于飲用以數(shù)據(jù)類型,數(shù)組中元素必須是同一數(shù)據(jù)類型,獲取某個角標位上:arr[角標值],獲取到數(shù)組中的某個角標之后,就可以獲取值和賦值了,獲取數(shù)組的長度:arr.length

數(shù)組默認值:整數(shù)型:byte short int long 默認初始化都是0? 浮點型:float double 默認初始化都是0.0? 布爾型 boolean 默認初始化是false? 字符型:char初始化值是'\u0000' 十六進制的 , 引用數(shù)據(jù)類型:所有引用數(shù)據(jù)蕾西初始化值都是null;

內(nèi)存圖

java中內(nèi)存分配:(數(shù)組)

棧:存儲局部變量? ? ? ? ? ?堆:存儲new出來的數(shù)組或者對象? ?

多個變量引用同一個數(shù)組:在棧中創(chuàng)建多個變量;多個變量執(zhí)行堆中的同一個數(shù)組對象

數(shù)組常見問題:

ArrayIndexOutOfBoundsException:數(shù)組角標越界異常,訪問了不存在的角標? ? ? ? ?NullPointerException:空指針異常,棧中的數(shù)組變量沒有指向堆內(nèi)存中的數(shù)組實體


數(shù)組的基本操作:循環(huán)遍歷數(shù)組;查找數(shù)組中的最大值;反轉數(shù)組,查找數(shù)組中某個值第一次出現(xiàn)的位置(對比數(shù)組中每個元素,匹配成功,返回當前的角標,否則返回一個負數(shù))

二分查找:使用折半的形式,一次性剔除一半的無效元素,提高查找的效率(二分查找的前提是數(shù)組必須是有序的,所以雖然二分查找效率高,但是僅限于有限數(shù)列)

冒泡排序:相鄰的兩個值比較,然后交換位置,每次循環(huán)都會將由原元素中最大的或者最小的移動到有效位的最后,所以經(jīng)過多次循環(huán),就可派出一個有序的數(shù)組,所以我們一般把先用冒泡排序先把數(shù)組排序然后在二分查找


2020-1-19

今天回顧數(shù)組知識的時候,看到了動態(tài)靜態(tài)初始化數(shù)組的時候,提到了jvm,靜態(tài)的時候給定數(shù)組的具體值,長度由jvm來判斷,動態(tài)的時候長度給定,值由jvm賦默認值,那這里的jvm是什么,有什么作用?

概念:jvm是java虛擬機,是一個位于java和操作系統(tǒng)之間的,有自己的完善結構,如處理器,堆棧,寄存器等

作用:java程序的跨平臺性主要就是因為JVM實現(xiàn)的.在編譯java程序時會將寫好的程序通過編譯器生成.class文件(又稱為字節(jié)碼文件)然后通過JVM內(nèi)部的解釋器將字節(jié)碼文件解釋稱為具體平臺上的機器指令執(zhí)行,所以就可以實現(xiàn)java程序的跨平臺特性

JVM內(nèi)部體系結構大致分為三部分:類裝載器(ClassLoader)子系統(tǒng),運行時數(shù)據(jù)區(qū)和執(zhí)行引擎

java程序運行與JVM的關系:

java源文件編譯生成.class文件(字節(jié)碼)

字節(jié)碼由JVM解釋運行

因為java程序既要編譯同時也要經(jīng)過JVM的解釋運行,所以java被稱為半解釋語言


day6(函數(shù);方法的分類和調(diào)用;方法的重載;方法間相互調(diào)用的內(nèi)存圖;可變參數(shù))

1函數(shù)(方法):java中運行代碼除極個別外,必須寫在方法內(nèi),方法就是代碼的載體;方法的出現(xiàn)提現(xiàn)了代碼的復用性

2.格式詳解:

修飾符:設定方法的作用范圍-----靜態(tài)/非靜態(tài):static關鍵字表示靜態(tài)----返回值類型:就是代碼運行的結果的數(shù)據(jù)類型---方法名:這個方法的名稱,調(diào)用的時候我們使用的就是方法名---參數(shù):實參:就是實際參加運算的值,基本數(shù)據(jù)類型就是值,引用數(shù)據(jù)類型就是地址值--形參:定義在方法上,用來表示接受的數(shù)據(jù)的類型---參數(shù)名就是變量名---方法體語句,就是我們實際運行的代碼---return關鍵字,表示結束方法,同時可以返回的一個值---return就是功能運行的結果,由return帶給調(diào)用者

3.方法的分類和調(diào)用

有參方法--無參方法--有返回值--無返回值

調(diào)用方式:單獨調(diào)用,方法獨立于其他代碼,獨立執(zhí)行功能-多用檢測維護型的方法

? ? ? ? ? ? ? ? 輸出調(diào)用,只做結果輸出,這種調(diào)用對我們來說沒有任何意義

? ? ? ? ? ? ? ? 賦值調(diào)用,有返回值結果.可以進一步操作返回值

4.方法的重載

1.一個類里面出現(xiàn)多個方法名相同,參數(shù)列表不同的多個方法,我們把這種現(xiàn)象叫做重載

2.方法重載是為了提高方法名的使用率,畢竟意思相同的單詞就那么幾個,而我們的方法功能也相似,這種情況下如果使用不同的方法名,很可能造成意義混亂,所以就出現(xiàn)了方法的重載

3.在我們的程序中絕不允許出現(xiàn)兩個一模一樣的方法,如果我們能想辦法讓jvm區(qū)別每個方法,那么這個方法就可以使用

參數(shù)列表:參數(shù)個數(shù)不同;參數(shù)類型不同,參數(shù)順序不同(也算是重載,但是一般開發(fā)中不用,沒有意義)

方法間相互調(diào)用的內(nèi)存圖

棧的定義:運行方法和存儲局部變量,棧是一個類似于羽毛球筒,是一個一端開口的筒子;執(zhí)行流程:當jvm執(zhí)行某個方法時,會將這個方法壓入棧中執(zhí)行,當這個方法又調(diào)用了其他方式時,jvm會將新的方法也放入棧中已有的方法上面執(zhí)行,當方法執(zhí)行完畢之后,方法就會被jvm從棧中移除,我們稱之為彈棧

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

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

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