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ǔ)打完~加油!小楠楠(? ?_?)?