Java基礎(chǔ)day03筆記:循環(huán)語句|函數(shù)的概述|函數(shù)的重載|數(shù)組的內(nèi)存結(jié)構(gòu)

2019.6.4 14:40 三刷結(jié)束留念? ? ——小楠楠


2019.4.11 17:28?二刷結(jié)束留念


? ? ? ? 慢慢適應(yīng)了現(xiàn)在的學(xué)習(xí)節(jié)奏层坠,基礎(chǔ)學(xué)習(xí)也步入了正題吩抓,每天的視頻課程容量都很大蛇摸,再加上停停頓頓抓住每個細節(jié),一天的視頻學(xué)習(xí)下來也需要好多時間呢誉裆,不過因為適應(yīng)得不錯勾给,感受也還好~沒有特別累,相反哑舒,看完之后有很多新收獲成就感大大的有(#^.^#)

? ? ? ? 從前輩那里學(xué)習(xí)了他以前的學(xué)習(xí)計劃和經(jīng)驗妇拯,原文:2019秋招經(jīng)驗談

????????專業(yè)技術(shù)的學(xué)習(xí)內(nèi)容包括:

? ??????學(xué)習(xí)資料:

? ? ? ? 文字版:

? ? ? ? PS:后面又有一些添加,文字版不是很完整洗鸵,可以參考那張紅色的圖~

? ? ? ? 學(xué)習(xí)路線推薦

? ? ? ? 打算按照上面學(xué)習(xí)路線的順序來學(xué)習(xí)專業(yè)技術(shù)越锈,現(xiàn)在在做第0步,任重而道遠~

? ? ? ? 好咯膘滨,開始day03課程的筆記啦甘凭。

????01-語句(while)

? ? ? ? 這節(jié)講程序控制中的第三種結(jié)構(gòu),循環(huán)結(jié)構(gòu)火邓。? ? ? ??

? ? ? ? 循環(huán)結(jié)構(gòu)中丹弱,代表語句有三種:while,do while铲咨,for躲胳。

? ? ? ? while語句格式

? ? ? ? 定義初始化表達式;

? ? ? ? while(條件表達式):

? ? ? ? {

? ? ? ? ? ? ? ? 執(zhí)行語句;

????????}

????02-語句(do while)

? ? ? ? do while的語句格式

? ? ? ? do

? ? ? ? {

????????????????執(zhí)行語句;

????????}while(條件表達式);

? ? ? ? do while 和 while的不同

? ? ? ? while:先判斷條件纤勒,只有條件滿足才執(zhí)行循環(huán)體坯苹。

? ? ? ? do while:先執(zhí)行循環(huán)體,再判斷條件摇天,條件滿足粹湃,再繼續(xù)執(zhí)行循環(huán)體恐仑。

? ? ? ? do while無論條件是否滿足,循環(huán)體至少執(zhí)行一次为鳄。

? ? ? ? 注意:

? ? ? ? int y=1;

? ? ? ? while(y<3);

? ? ? ? 不會報錯裳仆,編譯可以通過。但是程序會陷入死循環(huán)孤钦。

????03-語句(for)

? ? ? ? for語句格式

? ? ? ? for(初始化表達式鉴逞;循環(huán)條件表達式;循環(huán)后的操作表達式)

? ? ? ?{

? ? ? ? ? ? ? ? 執(zhí)行語句司训;

? ? ? ? }? ? ? ??

? ? ? ? 例:

? ? ? ? for(int x=0;x<3;x++)

? ? ? ? {

? ? ? ? ? ? ? ? System.out.println("x="+x);

? ? ? ? }

? ? 04-語句(for和while的區(qū)別)

? ? ? ? 上面那個例子用while來寫:

? ? ? ? int y=0;

? ? ? ? while(y<3)

? ? ? ? {

? ? ? ? ? ? ? ? System.out.println("y="+y);

????????}? ? ? ??

? ? ? ? 效果是一樣的构捡,沒有什么區(qū)別。

? ? ? ? 但是若for循環(huán)的初始表達式是在for循環(huán)中定義的壳猜,如for(int x=0;x<3;x++)勾徽,那么如果這個循環(huán)結(jié)束了,變量x也會消失统扳。但while循環(huán)中的初始表達式是在while循環(huán)外定義的喘帚,循環(huán)結(jié)束變量y依然存在。

? ? ? ? 所以咒钟,對于變量來講吹由,如果這個變量僅僅用來控制循環(huán)次數(shù),作為循環(huán)增量來講的話朱嘴,用for循環(huán)比較合適倾鲫。(哈哈~要嚴(yán)謹要一絲不茍,這一點點內(nèi)存也要好好規(guī)劃呢(*^▽^*))

????05-語句(循環(huán)語句的其他特點)

? ? ? ? 一個例子:


條件既不是真也不是假萍嬉,必然編譯失敗

? ? ? ? 進行一些修改:

? ? ? ? 這次編譯成功啦乌昔。

? ? ? ? 這個例子告訴我們for循環(huán)的兩件事:1.條件一定要為真或者為假。2.初始表達式不一定是int x=0;這種形式壤追,只要是合法的表達式就OK磕道。

? ? ? ? 再進行一些修改:

? ? ? ? 也可以編譯成功。循環(huán)后的操作表達式行冰,不一定是惟一的溺蕉,也可以有多個表達式,用逗號隔開即可悼做。

? ? ? ? 下面兩種寫法效果相同疯特,即可以把初始表達式寫在外面,把循環(huán)后的操作寫在里面贿堰,但其實也沒什么意義辙芍,所以一般不這么干。


????????無限循環(huán)的最簡單表現(xiàn)形式

? ? ? ? for(;;){}

? ? ? ? while(true){}

????06-語句(for語句練習(xí)-累加&計數(shù)器)

? ? ? ? 練習(xí)1:獲取1~10的和羹与,并打印故硅。

? ? ? ? 用while來寫:

? ? ? ? //1,定義變量用于存儲不斷變化的和

????????int sum=0;

? ? ? ? //2纵搁,定義變量記錄住不斷變化的被加的數(shù)

? ? ? ? int x=1;

? ? ? ? //3吃衅,定義循環(huán),重復(fù)加法的過程

? ? ? ? while(x<=10)

? ? ? ? {

? ? ? ? ? ? ? ? sum=sum+x;

? ? ? ? ? ? ? ? x++;

????????}

? ? ? ? System.out.println("while sum="+sum);

? ? ? ? 循環(huán)注意:

? ? ? ? 一定要明確哪些語句需要參與循環(huán)腾誉,哪些不需要徘层。

? ? ? ? 用for來寫:

? ? ? ? int sum=0;

? ? ? ? for(int x=0;x<=10;x++)

? ? ? ? {

? ? ? ? ? ? ? ? sum+=x;

? ? ? ? }

? ? ? ? System.out.println("for sum="+sum);

? ??????其實這就是累加思想

? ? ? ? 原理:通過變量記錄住每次變化的結(jié)果利职。

? ? ? ? 通過循環(huán)的形式趣效,進行累加動作。

? ? ? ? 字符串的延長也是累加猪贪。

? ? ? ? 記住了累加的思想跷敬,可以解決很多問題,如果只記住了上面這串代碼热押,那只能解決1~100的累加西傀。記住代碼,可以解決一個問題桶癣,記住思想拥褂,可以解決一類問題。

? ??????練習(xí)2:1~100之間7的倍數(shù)的個數(shù)牙寞,并打印饺鹃。?? ??

? ? ? ? 思路

? ? ? ? 1,先對1~100進行循環(huán)(遍歷)通過循環(huán)的形式间雀。

? ? ? ? 2尤慰,在遍歷的過程中,定義條件雷蹂,只對7的倍數(shù)進行操作伟端。? ??

? ? ? ? 步驟

? ? ? ? 1,定義循環(huán)語句匪煌,選擇for語句责蝠。

? ? ? ? 2,在循環(huán)中定義判斷萎庭,只要是7的倍數(shù)即可霜医。使用if語句。條件:7的背書 x%7=0;

? ? ? ? for(int x=1;x<=100;x++)

? ? ? ? {

? ? ? ? ? ? ? ? if(x%7==0)

? ? ? ? ? ? ? ? ? ? ? ? System.out.println("x="+x);

? ? ? ? }

?????????如果想要知道100內(nèi)有多少個7的倍數(shù)呢驳规?

????????在思路中加入第三條:

????????3肴敛,因為7的倍數(shù)不確定,只要符合條件,就通過一個變量來記錄住這個變化的次數(shù)医男。

? ? ? ? 在步驟中加入第三條:

????????3砸狞,定義變量,該變量隨著7的倍數(shù)的出現(xiàn)而自增镀梭。

? ? ? ? int count=0;

????????for(int x=1;x<=100;x++)

????????{

????????????????if(x%7==0)

????????????????????????count++;

? ? ? ? }

? ? ? ? System.out.println("count="+count);

? ? ? ? 計數(shù)器思想:

? ? ? ? 通過一個變量記錄住數(shù)據(jù)的狀態(tài)變化刀森。

? ? ? ? 也需要通過循環(huán)完成。

????07-語句(for嵌套)

? ? ? ? 語句嵌套形式报账,其實就是語句中還有語句研底。

? ? ? ? 一個循環(huán)嵌套的例子。

? ? ? ? 打印長方形:

? ? ? ? for(int x=0;x<3;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=0;y<4;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print("*");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println();//只有一個功能就是換行

? ? ? ? ? ? ? ? //System.out.print();//如果這樣寫一點功能都沒有 Java看到這種廢話都會給提示的

????????}? ? ?

? ? ? ? 對于打印長方形:外循環(huán)控制行數(shù)透罢,內(nèi)循環(huán)控制每一行的列數(shù)榜晦,也就是一行中元素的個數(shù)。

? ? ? ? 再一個例子羽圃,打印下面的圖形:

? ? ? ? *****

? ? ? ? ****

? ? ? ? ***

? ? ? ? **

? ? ? ? *

? ? ? ? 發(fā)現(xiàn)圖形有很多行乾胶,每一行有很多列。

? ? ? ? 要使用嵌套循環(huán)统屈。原理:形象說法:大圈套小圈胚吁。

? ? ? ? for(int x=0;x<5;x++)//x<5:因為外循環(huán)控制行數(shù)。一共五行愁憔。

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=x;y<5;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print("*");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println();

? ? ? ? }

????08-語句(for嵌套練習(xí))

? ? ? ? 練習(xí)1 打印下面的圖形:

????????*

????????**

????????***

????????****

????????*****

? ? ? ? for(int x=0;x<5;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=0;y<=x;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print("*");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println();

? ? ? ? }

? ? ? ? 不是規(guī)律的規(guī)律:

? ? ? ? 尖朝上腕扶,可以改變條件,讓條件隨著外循環(huán)變化吨掌。

? ? ? ? 尖朝下半抱,可以改變初始化值,讓初始化隨著外循環(huán)變化膜宋。

? ? ? ? 練習(xí)2 打印下面的圖形:

? ? ? ? 1

? ? ? ? 12

? ? ? ? 123

? ? ? ? 1234

? ? ? ? 12345

? ? ? ? 經(jīng)過觀察窿侈,每一行第一列都是1,所以控制列的內(nèi)循環(huán)變量y的初始值為1秋茫;每一列都在自增1史简,所以循環(huán)后的操作是y++;列數(shù)和行數(shù)的關(guān)系是肛著,列數(shù)等于行數(shù)圆兵,所以循環(huán)條件表達式為y<=x。

? ? ? ? for(int x=1;x<=5;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=1;y<=x;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print(y);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println();

? ? ? ? }

? ? 09-語句(for嵌套-九九乘法表)

? ? ? ? 九九乘法表:? ? ? ??

? ? ? ? 1*1=1

? ? ? ? 1*2=2 2*2=4

? ? ? ? 1*3=3 2*3=6 3*3=9

? ? ? ? 觀察一下枢贿,每一行第一個被乘數(shù)都是1殉农,所以控制列的內(nèi)循環(huán)的變量y的初始值為1;第二個被乘數(shù)都是第一個自增1局荚,后面同理超凳,且列數(shù)和行數(shù)是一致的愈污,所以循環(huán)條件表達式為y<=x;再看乘數(shù)轮傍,每一行的乘數(shù)都跟著行數(shù)遞增而遞增暂雹,是和行數(shù)一致的,因此控制行的外循環(huán)的變量x的初始化值為1金麸,循環(huán)條件表達式為x<=3擎析。

? ? ? ? for(x=1;x<=3;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(y=1;y<=x;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print(y+"*"+x+"="+y*x+"\t");//最后直接用空格" "的話會對不齊簿盅,所以用制表符\t

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println();

? ? ? ? }

? ? ? ? 將它應(yīng)用到打印出九九乘法表挥下,將x<=3中的3改成9即可。

????10-語句(break-continue)??

? ? ? ? 其他流程控制語句:break(跳出)桨醋,continue(繼續(xù))棚瘟。

? ? ? ? break語句:應(yīng)用范圍:選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。跳出循環(huán)喜最。

? ? ? ? 一種特殊情況偎蘸,給內(nèi)循環(huán)和外循環(huán)標(biāo)號以做區(qū)分:

? ? ? ? 例1,break只是跳出內(nèi)循環(huán)瞬内,外循環(huán)依然執(zhí)行迷雪。

? ??????for(int x=0;x<3;x++)

????????{

? ? ? ? ? ? ? ? for(int y=0;y<4;y++)

????????????????{

? ? ? ? ? ? ? ? ? ? ? ? System.out.println("x="+x);

????????????????????????break;

????????????????}

? ? ? ? }

? ? ? ? 例2,通過標(biāo)號可以區(qū)分兩個循環(huán)虫蝶,指明跳出哪個循環(huán)章咧,內(nèi)循環(huán)可以不定義,因為默認跳出的就是內(nèi)循環(huán)~

? ? ? ? w:for(int x=0;x<3;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=0;y<4;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.println("x="+x);

? ? ? ? ? ? ? ? ? ? ? ? break w;

? ? ? ? ? ? ? ? }

? ? ? ? }

? ? ? ? continue語句:只能作用于循環(huán)結(jié)構(gòu)能真。繼續(xù)循環(huán)赁严。特點:結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)粉铐。

? ? ? ? for(int x=1;x<10;x++)

? ? ? ? {

? ? ? ? ? ? ? ? if(x%2==1)

? ? ? ? ? ? ? ? ? ? ? ? continue;

? ? ? ? ? ? ? ? System.out.println("x="+x);

? ? ? ? }

? ? ? ? 一種特殊情況:

? ? ? ? w:for(int x=0;x<3;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=0;y<4;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.println("x="+x);

? ? ? ? ? ? ? ? ? ? ? ? continue w;//如果這里不寫w疼约,這個語句就沒有什么意義,寫了之后蝙泼,是繼續(xù)外循環(huán)

? ? ? ? ? ? ? ? }

? ? ? ? }

? ? ? ? 注意:

? ? ? ? 1程剥,break和continue語句作用的范圍。

? ? ? ? 2汤踏,break和continue語句單獨存在時织鲸,下面可以有任何語句,因為都執(zhí)行不到茎活。

11-語句(練習(xí))????????

? ? ? ? 畫這個圖形:

? ? ? ? “-”表示空格昙沦。? ??

? ? ? ? 其實是將下面這個三角形,不打印單個的*载荔,而是打印*+空格盾饮,最后畫出來的。? ?

? ? ? ? 行數(shù)是確定的,所以外循環(huán)是固定的丘损。內(nèi)循環(huán)部分普办,我們首先要打印空格。

? ? ? ? for(int x=0;x<5;x++)

? ? ? ? {

? ? ? ? ? ? ? ? for(int y=x+1;y<5;y++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print(" ");? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? }?

? ? ? ? ? ? ? ? for(int z=0;z<=x;z++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? System.out.print("* ");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println();

? ? ? ? }

? ? 12-函數(shù)(概述)

? ? ? ? 函數(shù)的定義

? ? ? ? 函數(shù)就是定義在類中的具有特定功能的一段獨立小程序徘钥。

? ? ? ? 函數(shù)也稱為方法衔蹲。

? ? ? ? int x=4;

? ? ? ? System.out.println(x*3+5);

? ? ? ? x=6;

? ? ? ? System.out.println(x*3+5);

? ? ? ? 發(fā)現(xiàn)以上的運算,因為獲取不同數(shù)據(jù)的運算結(jié)果呈础,代碼出現(xiàn)了重復(fù)舆驶。

? ? ? ? 為了提高代碼的復(fù)用性,對代碼進行抽取而钞。

? ? ? ? 將這個部分定義成一個獨立的功能沙廉,方便于日后使用。

? ? ? ? java中對功能的定義是通過函數(shù)的形式來體現(xiàn)的臼节。

? ? ? ? 需要定義功能撬陵,完成一個整數(shù)的*3+5的運算,并打印結(jié)果网缝。

? ? ? ? 1巨税,先明確函數(shù)定義的格式。

? ? ? ? 修飾符:對函數(shù)進行外加功能的定義粉臊,比如衣服之于人草添,穿著軍裝就是軍人,穿著便服就是老百姓维费,衣服就是一種修飾果元。? ? ? ?

? ? ? ? 返回值類型:函數(shù)運行后的結(jié)果的數(shù)據(jù)類型。

? ? ? ? 參數(shù)類型:是形式參數(shù)的數(shù)據(jù)類型犀盟。

? ? ? ? 形式參數(shù): 是一個變量而晒,用于存儲調(diào)用函數(shù)時傳遞給函數(shù)的實際參數(shù)。

? ? ? ? 實際參數(shù):傳遞給形式參數(shù)的具體數(shù)值阅畴。

? ? ? ? return:用于結(jié)束函數(shù)倡怎。

? ? ? ? 返回值:該值會返回給調(diào)用者。

? ? ? ? public static int getResult(int num)

? ? ? ? {

? ? ? ? ? ? ? ? return num*3+5;

? ? ? ? }

? ? ? ? 這個函數(shù)贱枣,定義在主函數(shù)后面也可以监署,定義在主函數(shù)前面也可以,定義在主函數(shù)前面放在第一個位置纽哥,程序一開始也不會第一個執(zhí)行它钠乏,主函數(shù)在哪里,程序就從哪里入口執(zhí)行春塌。定義的函數(shù)晓避,不一定會被執(zhí)行簇捍,只有調(diào)用它,它才會執(zhí)行俏拱。

? ? ? ? 怎么調(diào)用它呢暑塑?

? ? ? ? 在主函數(shù)中:

public static void main(String[] args)

{

? ? ? ? getResult(4);

}

? ? ? ? 捋一下過程:主函數(shù)先被調(diào)用,這里面有一行代碼getResult(4);被執(zhí)行锅必,這行代碼跳轉(zhuǎn)到定義的函數(shù)中來執(zhí)行事格,?同時把4這個具體的值傳給了num,傳完之后給num*3+5搞隐,然后把結(jié)果返回給主函數(shù)驹愚。

? ? ? ? 這樣最后執(zhí)行是沒有結(jié)果噠,我們可以寫成這樣:

? ? ? ? int x=getResult(4);

? ? ? ? System.out.println("x="+x);

? ? ? ? 運行就有結(jié)果打印出來啦尔许。

? ? ? ? 由上么鹤,函數(shù)的功能:提高復(fù)用性终娃。

? ? ? ? 函數(shù)的特點:

? ? ? ? 定義函數(shù)可以將功能代碼進行封裝味廊。

? ? ? ? 便于對該功能進行復(fù)用。

? ? ? ? 函數(shù)只有被調(diào)用才會被執(zhí)行棠耕。

? ? ? ? 函數(shù)的出現(xiàn)提高了代碼的復(fù)用性余佛。

? ? ? ? 對于函數(shù)沒有具體返回值的情況,返回值類型用關(guān)鍵字void表示窍荧,那么該函數(shù)中的return語句如果在最后一行可以省略不寫辉巡。

????13-函數(shù)(應(yīng)用)

? ? ? ? 我們在編寫程序,其實就是在不斷的實現(xiàn)功能蕊退,而Java中最小的功能單元就是函數(shù)郊楣。所以日后在寫代碼的時候,定義一個功能就把它定義到一個獨立的函數(shù)中去瓤荔,而不要亂七八糟都塞到主函數(shù)里净蚤。

? ? ? ? 主函數(shù)的功能其實就一個:調(diào)用函數(shù)。

? ? ? ? 如何定義一個函數(shù)呢输硝?

? ? ? ? 1今瀑,既然函數(shù)是一個獨立的功能,那么該功能的運算結(jié)果是什么先明確点把。(因為有了現(xiàn)實中的需求橘荠,所以才需要用Java中的代碼來體現(xiàn)一下功能需求,所以在寫代碼之前要先想好功能才能用代碼體現(xiàn)~)

? ? ? ? 因為這是在明確函數(shù)的返回值類型郎逃。

? ? ? ? 2哥童,在明確定義該功能的過程中是否需要未知的內(nèi)容參與運算闰蛔。(即這個功能是能夠完全獨立實現(xiàn)任斋,還是需要調(diào)用者給一些值?)

? ? ? ? 因為這是在明確函數(shù)的參數(shù)列表(參數(shù)的類型和參數(shù)的個數(shù))挡逼。

? ? ? ? 例1:

? ? ? ? //需求:定義一個功能,完成3+4的運算错邦,并將結(jié)果返回給調(diào)用者探赫。

? ? ? ? /*

? ? ? ? 1,明確功能的結(jié)果:是一個整數(shù)的和撬呢。

? ? ? ? 2伦吠,在實現(xiàn)該功能的過程中是否有未知內(nèi)容參與運算,沒有魂拦。

? ? ? ? 其實這兩個功能就是在明確函數(shù)的定義毛仪。

? ? ? ? 1,是在明確函數(shù)的返回值類型芯勘。

? ? ? ? 2箱靴,明確函數(shù)的參數(shù)列表。

? ? ? ? */

? ? ? ? public static int getSum()

? ? ? ? {

? ? ? ? ? ? ? ? return 3+4;

? ? ? ? }

? ? ? ? 例2:

? ? ? ? /*

? ? ? ? 以上這個函數(shù)的功能荷愕,結(jié)果是固定的衡怀,毫無擴展性而言。

? ? ? ? 為了方便用戶需求安疗,由用戶來指定加數(shù)和被加數(shù)抛杨。這樣,功能才有意義荐类。

? ? ? ? 思路:

? ? ? ? 1怖现,功能結(jié)果是一個和。返回值類型是int玉罐。

? ? ? ? 2屈嗤,有未知內(nèi)容參與運算。有兩個吊输。這兩個未知內(nèi)容的類型都是int饶号。

? ? ? ? */

? ? ? ? public static int getSum(int x,int y)

? ? ? ? {

? ? ? ? ? ? ? ? return x+y;

? ? ? ? }

????例3:

?????/*

? ? ? ? 需求:判斷兩個數(shù)是否相同。

? ? ? ? 思路:

? ? ? ? 1璧亚,明確功能的結(jié)果:結(jié)果是:boolean讨韭。

? ? ? ? 2,功能是否有未知內(nèi)容參與運算癣蟋。有透硝,兩個整數(shù)。

? ? */ ? ? ? ? ??

? ? ? ? public static boolean compare(int a,int b)

? ? ? ? {

? ??????????????//優(yōu)化前

? ? ? ? ? ? ? ? //if(a==b)

? ? ? ? ? ? ? ? // ? ? ? ?return true;

? ? ? ? ? ? ? ? //else

? ? ? ? ? ? ? ? // ? ? ? ?return false;

? ???????? ????? //優(yōu)化中 ? ? ? ? ? ? ? ?

? ???????????????//return (a==b)?true:false;?

? ? ? ? ? ? ? ? ? //優(yōu)化后 ? ? ? ??

? ???????????????return a==b; ? ?

? ? ? ? }

? ? ? ? 例4:

? ? ? ? /*

? ? ? ? 需求:定義功能疯搅,對兩個數(shù)進行比較濒生,獲取較大的數(shù)。

? ? ? ? */

? ? ? ? public static int getMax(int a,int b)

? ? ? ? {

? ? ? ? ? ? ? ? /*

? ? ? ? ? ? ? ? if(a>b)

? ? ? ? ? ? ? ? ? ? ? ? return a;

? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? return b;

? ? ? ? ? ? ? ? */

? ? ? ? ? ? ? ? return (a>b)?a:b; ? ? ? ? ? ? ? ?

? ? ? ? }

? ? ? ? 一個不對的例子: ? ? ? ?

? ??14-函數(shù)(練習(xí))

? ? ? ? 1幔欧,定義一個功能罪治,用于打印矩形丽声。

? ? ? ? 2,定義一個打印99乘法表功能的函數(shù)觉义。

? ? ? ? /*

? ? ? ? 定義一個功能雁社,用于打印矩形。

? ? ? ? 思路:

? ? ? ? 1晒骇,確定結(jié)果:沒有霉撵,因為直接打印,所以返回值類型是void洪囤。

? ? ? ? 2徒坡,有未知內(nèi)容嗎?有瘤缩,兩個喇完,因為矩形的行和列不確定。

? ? ? ? */

? ? ? ? public static void draw(int row,int col)

? ? ? ? {

? ? ? ? ? ? ? ? for(int x=0;x<row;x++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? for(int y=0;y<col;y++)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.print("*");

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? System.out.println();

? ? ? ? ? ? ? ? }

? ? ? ? }

? ? ? ? //主函數(shù)調(diào)用

? ? ? ? draw(5,6);

? ? ? ? /*

? ? ? ? 定義一個打印99乘法表功能的函數(shù)剥啤。

? ? ? ? */

? ? ? ? public static void print99()

? ? ? ? {

? ? ? ? ? ? ? ? for(int x=1;x<=9;x++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? for(int y=1;y<=x;y++)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.print(y+"*"+x+"="+y*x+"\t");

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? System.out.println();

? ? ? ? ? ? ? ? }

? ? ? ? }

? ? ? ? //主函數(shù)調(diào)用

? ? ? ? print99();

15-函數(shù)(重載)

? ? ? ? 重載的概念:

? ? ? ? 在同一個類中锦溪,允許存在一個以上的同名函數(shù),只要它們的參數(shù)個數(shù)或者參數(shù)類型不同即可铐殃。

? ? ? ? 重載的特點:

? ? ? ? 與返回值類型無關(guān)海洼,只看參數(shù)列表。

? ? ? ?

? ? ? ? //定義一個加法運算富腊,獲取兩個整數(shù)的和。

? ? ? ? public static int add(int x,int y)

? ? ? ? {

? ? ? ? ? ? ? ? return x+y;

? ? ? ? }

? ? ? ? //定義一個加法域帐,獲取三個整數(shù)的和赘被。

? ? ? ? public static int add(int x,int y,int z)

? ? ? ? {

? ? ? ? ? ? ? ? return x+y+z;

? ? ? ? }

? ? ? ? 什么時候用重載?

? ? ? ? 當(dāng)定義的功能相同肖揣,但參與運算的未知內(nèi)容不同時民假。

? ? ? ? 那么,這時就定義一個函數(shù)名稱以表示其功能龙优,方便閱讀羊异,而通過參數(shù)列表的不同來區(qū)分多個同名函數(shù)。

? ? ? ? 九九乘法表的優(yōu)化:

? ? ? ? public static void print99(int num)

? ? ? ? {

? ? ? ? ? ? ? ? for(int x=1;x<=num;x++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? for(int y=1;y<=x;y++)

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.print(y+"*"+x+"="+y*x+"\t");

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? System.out.println();

? ? ? ? ? ? ? ? }

????????}

? ? ? ? public static void print99()

? ? ? ? {

? ? ? ? ? ? ? ? print99(9);

? ? ? ? }

? ? ? ? 同理彤断,剛剛的加法也可以優(yōu)化:

? ? ? ? public static int add(int x,int y)

? ? ? ? {

? ? ? ? ? ? ? ? return x+y;

? ? ? ? }

? ? ? ? public static int add(int x,int y,int z)

? ? ? ? {

? ? ? ? ? ? ? ? return add(x,y)+z;

? ? ? ? }

? ? ? ? 幾個例子~ ? ? ? ?

????17-數(shù)組(概述-內(nèi)存結(jié)構(gòu))

? ? ? ? 數(shù)組的概念:

? ? ? ? 同一種類型數(shù)據(jù)的集合野舶。其實數(shù)組就是一個容器供炼。

? ? ? ? 數(shù)組的好處: ? ? ?

? ? ? ? 可以自動給數(shù)組中的元素從0開始編號,方便操作這些元素。

? ? ? ? 定義方法:

? ? ? ? 元素類型[] 數(shù)組名=new 元素類型[元素個數(shù)或數(shù)組長度];

? ? ? ? 例:

? ? ? ? //需求:想定義一個可以存儲3個整數(shù)的容器。

? ? ? ? int[] x=new int[3];

? ? ? ? 上面的x是什么類型呢?

? ? ? ? 注意它不是int型哦,它是數(shù)組類型,數(shù)組是一種單獨的數(shù)據(jù)類型。

? ? ? ? 第一講的時候有講到數(shù)據(jù)類型有兩種:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,數(shù)組類型就是引用數(shù)據(jù)類型的三種之一。

? ? ? ? 那么?int[] x=new int[3];在內(nèi)存中是什么樣的呢?

? ? ? ? 內(nèi)存結(jié)構(gòu)

? ? ? ? Java程序在運行時,需要在內(nèi)存中分配空間。為了提高運算效率,又對空間進行了不同區(qū)域的劃分,因為每一片區(qū)域都有特定的處理數(shù)據(jù)方式和內(nèi)存管理方式。

? ? ? ? 劃分為五片空間:棧內(nèi)存,堆內(nèi)存,方法區(qū),本地方法區(qū),寄存器床绪。

? ? ? ? 我們這里主要講前兩種末秃,后面三種以后再說~????

? ? ? ? 例:

? ? ? ? int x=3; ? ? ? ?

? ??????int[] x=new int[3];

? ? ? ? 這也是數(shù)組類型是引用數(shù)據(jù)類型的原因劲阎。因為數(shù)據(jù)并沒有存到x中沦零,而是存在x所指向的地址的空間中货岭,x只是引用了這個地址而已~

? ? ? ? 堆內(nèi)存中的實體都是用來封裝數(shù)據(jù)的路操,它都有默認的初始化值屯仗。默認的初始化值是什么呢?這就要根據(jù)定義的數(shù)組類型來定啦粟按。如果定義的是int型數(shù)組后控,默認的初始化值就是0浩淘,float就是0.0,boolean類型就是false张抄。

? ? ? ? 如果我們不想讓x再指向數(shù)組該怎么做呢砂蔽?

? ? ? ? x=null;

? ? ? ? x不再指向數(shù)組,而是值為空署惯,這時x就和數(shù)組沒有關(guān)系啦左驾。此時實體在堆內(nèi)存中就沒有人使用了,當(dāng)一個實體在對內(nèi)存中沒有人引用和使用時,我們就視它為垃圾诡右。垃圾不會立刻被內(nèi)存清理掉安岂,而是在不定時的時間內(nèi)啟動一個垃圾回收機制,將這個數(shù)組實體在堆內(nèi)存中清除稻爬。

? ? ? ? 說一下Java語言的垃圾回收機制嗜闻。

? ? ? ? Java語言呢本身成長自C++,它優(yōu)化了C++語言的一些特性桅锄,而變得更加易學(xué)易用琉雳,尤其在內(nèi)存這一塊,它做得比C++更好友瘤。

? ? ? ? C++語言的特點在于翠肘,我們寫了很多的程序,運行的時候會在內(nèi)存中開辟空間辫秧,當(dāng)內(nèi)存中的實體越來越多的時候束倍,哪些實體不用就得想辦法清理掉。在C++中盟戏,是由程序員手動來將不用的實體在內(nèi)存中清理掉绪妹。如果程序員忘記清理了,那么運行的時間越長柿究,程序就越慢邮旷,甚至到最后會死機。

? ? ? ? 而Java不需要程序員手動去清除蝇摸,一旦這個對象變成垃圾婶肩,虛擬機會自動啟動垃圾回收機制將堆內(nèi)存中不再被使用的實體清除掉。

? ? ? ? 一定會馬上清除掉嗎貌夕?不是的律歼,是會不定時的啟動這個~然后清除掉。

? ? ? ? 由上啡专,棧和堆是不一樣的险毁,棧是自動釋放,堆是垃圾回收们童。

? ? ? ? 一個例子: ? ? ? ?

? ? ? ? 這是兩個引用在同時操作同一個數(shù)組的例子辱揭。

? ? ? ? 即使x指向為空,堆內(nèi)存中也沒有垃圾病附,因為還有y指向它呢。

? ? ? ? 就像兩個人用一臺電腦亥鬓,第一個人裝了一個軟件完沪,第二個人也可以用。

? ? ? ? 再一個例子:

? ? ? ? ? ? ? ? a的值依然是5,沒有變覆积。

? ? ? ? ? ? 再一個例子:

? ? ? ? ? ? 此時x為空后堆內(nèi)存中就有垃圾啦听皿。

? ? ? ? 就像兩個人用兩臺電腦,各自用各自的宽档,一個在自己的電腦上修改了尉姨,也不會影響另一個人~

? ? ? ? day03是戰(zhàn)線拖得最長的一次,寫了兩周多才寫好吗冤,中間發(fā)生了很多事情又厉,包括八周年慶的策劃、導(dǎo)師給安排的任務(wù)等等~都忙完后趕緊把這個趕著寫完啦椎瘟,接下來更要抓緊時間覆致,想在年底之前把基礎(chǔ)打完~加油!小楠楠(? ?_?)?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肺蔚,一起剝皮案震驚了整個濱河市煌妈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宣羊,老刑警劉巖璧诵,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仇冯,居然都是意外死亡之宿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門赞枕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澈缺,“玉大人,你說我怎么就攤上這事炕婶〗闵模” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵柠掂,是天一觀的道長项滑。 經(jīng)常有香客問我,道長涯贞,這世上最難降的妖魔是什么枪狂? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮宋渔,結(jié)果婚禮上州疾,老公的妹妹穿的比我還像新娘。我一直安慰自己皇拣,他們只是感情好严蓖,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布薄嫡。 她就那樣靜靜地躺著,像睡著了一般颗胡。 火紅的嫁衣襯著肌膚如雪毫深。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天毒姨,我揣著相機與錄音哑蔫,去河邊找鬼。 笑死弧呐,一個胖子當(dāng)著我的面吹牛闸迷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泉懦,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼稿黍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了崩哩?” 一聲冷哼從身側(cè)響起巡球,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邓嘹,沒想到半個月后酣栈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡汹押,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年矿筝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚贾。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡窖维,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妙痹,到底是詐尸還是另有隱情铸史,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布怯伊,位于F島的核電站琳轿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耿芹。R本人自食惡果不足惜崭篡,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吧秕。 院中可真熱鬧琉闪,春花似錦、人聲如沸砸彬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吟秩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绽淘,已是汗流浹背涵防。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沪铭,地道東北人壮池。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像杀怠,于是被迫代替她去往敵國和親椰憋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容