第四周學習

2021-08-31 01:17:05 字數 2782 閱讀 4375

方法的結構:

方法包括方法頭和方法體。

方法頭包括方法的返回型別(有無)、方法名稱和引數。

方法體包括可執行**的語句序列。

方法體內部的**執行:

方法體是乙個塊。

塊可以包含本地變數、控制流結構、方法呼叫、內嵌的塊。

本地變數:

用於儲存本地的或臨時的計算資料。

存在性和生存週期僅限於建立他的塊及內嵌的塊。

本地變數值型別儲存在棧裡,引用型別儲存在堆裡,例項欄位都儲存在堆裡。

型別推斷和var關鍵字:

var關鍵字並不是特定型別變數的符號。

表示任何可以從初始化語句的右邊推斷出的型別。

本地變數使用條件:

只能用於本地變數,不能用於字段;

只能在變數宣告中包含初始化時使用;

一旦編譯器推斷出變數的型別,它就是固定且不能更改的。

巢狀塊中的本地變數:

不管巢狀級別如何,都不能在第乙個名稱的有效範圍內宣告另乙個同名的本地變數 。

本地常量:

常量在宣告時必須初始化並且宣告後不能改變。

宣告方法:在型別之前加上const。

控制流:

選擇語句(if,if … else,switch);

迭代語句(for,while,do,foreach);

跳轉語句:

break:跳出當前迴圈;

continue:跳至當前迴圈底部;

goto:到乙個命名的語句;

return:返回到呼叫方法繼續執行。

方法的呼叫:

可以從方法體內部呼叫其他方法。

使用方法時要使用方法名並帶上引數。

返回值:

返回的值被插入到呼叫**中發起呼叫表示式所在位置。

要返回值必須宣告返回型別;

不要返回值,必須宣告void返回型別。

返回語句和void方法

可以在任何時候用return返回語句退出方法,不帶引數。

這種形式的返回語句只能用於用void宣告方法。

引數:傳入資料和返回資料

形參:在宣告方法的引數列表中,而不是方法體中;

實參:用於初始化形參的表示式或變數,位於方法呼叫的引數列表中。

值引數:

使用值引數,通過將實參的值複製到形參的方式把資料傳遞給方法。

值引數的值不一定是變數,它可以是任何能計算成相應資料型別的表示式。

引用引數(ref):

使用引用引數,必須在方法的宣告和呼叫中都使用ref修飾詞。

對應引用引數,形參就像實參的別名。

引用型別作為值引數和引用引數:

將引用物件作為值引數傳遞:如果在方法內建立新的物件並賦值給形參,將切斷形參和實參的聯絡,並且在方法呼叫結束後,新物件也將不復存在。

將引用物件作為引用引數傳遞:如果在方法內建立新的物件並賦值給形參,在方法呼叫結束後該物件依然存在,並且是實參所引用的值。

輸出引數(out):

用於把方法體內資料傳出到呼叫**;

宣告和呼叫必須使用修飾符out;

輸出引數在能被讀取前必須賦值;

引數陣列(params):

在宣告中需要修飾符,在呼叫時不需要修飾符;

呼叫時可以用該資料型別的元素列表,也可以用一維陣列;

引數列表中只能有乙個引數陣列;

引數陣列只能放在最後。

當陣列在堆中建立時,實參的值被複製到陣列中,就像值引數;

在方法呼叫之前建立並組裝乙個陣列,把單一的陣列變數作為實參傳遞。這種情況下,編譯器使用你的陣列而不是重新建立乙個。

方法的過載:

乙個類中可以有乙個以上的方法擁有相同的名稱。

方法的簽名包括方法的名稱、引數的數目、引數的資料型別和順序、引數修飾符。

返回型別和形參的名稱不是簽名。

static void main(string args)

,,",r0,r1 ,r2 );

console.readkey();

}static int calc(int a, int b, int c)

可選引數:

在呼叫方法時可以包含這個引數也可以省略。

使用前提是在宣告方法的時候為引數提供預設值。

值型別的預設值在編譯時可以確定,就可以作為可選引數。

只有預設值為null時,引用型別才可以作為可選引數。

必填引數在可選引數之前宣告。

語法順序:必填引數,可選引數,引數陣列

棧幀:在呼叫方法時,記憶體從棧的頂部開始分配,儲存和方法關聯的一些資料項。這塊記憶體叫做方法的棧幀。

遞迴:除了呼叫其他方法,也可以呼叫自身;

例計算階乘數:

static int factorial(int invalue)

例:呼叫自身然後列印輸入引數

static void  count(int inval)

", inval);//每乙個count都有自己的輸出引數值

棧和堆:

棧儲存的資料型別:某些型別變數的值、傳遞給方法的引數、程式當前的執行環境;

棧的特徵:資料只能從棧的頂端插入和刪除;把資料放到棧頂稱為入棧;從棧頂刪除資料稱為出棧;

堆是一塊記憶體區域,堆裡的資料可以任意儲存和移除;

值型別和引用型別:

值型別只需要一段單獨的記憶體,用於儲存實際的資料;

引用型別需要兩段記憶體,第一段儲存實際的資料,它總送位於堆中;第二段是乙個引用,指向資料存放在堆中的位置。

對於引用型別的任何物件,它所有的資料成員都存放在堆裡,無論它是值型別還是引用型別。

第四周學習

一 統計出 etc passwd檔案中其預設shell為非 sbin nologin的使用者個數,並將使用者都顯示出來 root centos7 echo 一共 cat etc passwd grep v sbin nologin wc l 個,分別是 cat etc passwd grep v s...

機器學習第四周

好,下面來總結一下學習內容。一開始就講了non linear hypothesis 非線性估計 這是當資料無法用簡單的線性模型處理的時候採用的方法,然後andrew就開始講神經網路了,這一周的內容沒有很詳細,就是大概地讓你知道一下神經網路,產生乙個初步的印象。還是先來把用到的符號交代了吧。符號含義 ...

模仿學習(第四周)

在傳統的強化學習任務中,通常通過計算累積獎賞來學習最優策略 policy 這種方式簡單直接,而且在可以獲得較多訓練資料的情況下有較好的表現。然而在多步決策 sequential decision 中,學習器不能頻繁地得到獎勵,且這種基於累積獎賞及學習方式存在非常巨大的搜尋空間。而模仿學習 imita...